Chapter 15 Faecal Microbiota Transplantation (FMT)
15.1 Does FMT change the microbial community over time?
15.1.1 Alpha diversity
sample_metadata <- sample_metadata %>%
mutate(treatment=time_point) %>%
mutate(treatment=case_when(
treatment %in% c("Donor1", "Donor2") ~ "Inoculum",
TRUE ~ treatment
))
alpha_div_meta <- alpha_div %>%
left_join(sample_metadata, by = join_by(sample == sample))%>%
filter(type == "Cold_intervention" & treatment %in% c("FMT1","FMT2") ) alpha_div %>%
pivot_longer(-sample, names_to = "metric", values_to = "value") %>%
left_join(., sample_metadata, by = "sample") %>%
mutate(metric=factor(metric,levels=c("richness","neutral", "phylogenetic"))) %>%
filter(type=="Cold_intervention" & treatment %in% c("FMT1", "FMT2")) %>%
ggplot(aes(y = value, x = treatment, color=treatment, fill=treatment)) +
geom_boxplot(width = 0.5,alpha=0.5 ,outlier.shape = NA, show.legend = FALSE) +
geom_jitter(width = 0.2, show.legend = FALSE) +
scale_color_manual(values=c("#76b183", '#40714b50')) +
scale_fill_manual(values=c("#76b183", '#40714b50')) +
facet_wrap( ~ metric, scales = "free")+
theme_classic() +
theme(
strip.background = element_blank(),
panel.grid.minor.x = element_line(size = .1, color = "grey"),
axis.text = element_text(size = 12),
axis.title.y = element_text(size = 14),
axis.title.x = element_blank(),
strip.text = element_text(size = 16, lineheight = 0.6)
) +
ylab("Alpha diversity")Richness
Modelq0GLMMNB <- glmer.nb(richness ~ treatment+(1|individual), data = alpha_div_meta)
summary(Modelq0GLMMNB)Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) ['glmerMod']
Family: Negative Binomial(4.3157) ( log )
Formula: richness ~ treatment + (1 | individual)
Data: alpha_div_meta
AIC BIC logLik deviance df.resid
171.5 174.8 -81.7 163.5 13
Scaled residuals:
Min 1Q Median 3Q Max
-1.72426 -0.71683 -0.08993 0.38000 1.84050
Random effects:
Groups Name Variance Std.Dev.
individual (Intercept) 0 0
Number of obs: 17, groups: individual, 9
Fixed effects:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 3.9416 0.1772 22.247 <2e-16 ***
treatmentFMT2 0.4080 0.2420 1.686 0.0918 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Correlation of Fixed Effects:
(Intr)
tretmntFMT2 -0.732
optimizer (Nelder_Mead) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')
Neutral
Model_neutral <- nlme::lme(fixed = neutral ~ treatment, data = alpha_div_meta,
random = ~ 1 | individual)
summary(Model_neutral)Linear mixed-effects model fit by REML
Data: alpha_div_meta
AIC BIC logLik
129.347 132.1792 -60.6735
Random effects:
Formula: ~1 | individual
(Intercept) Residual
StdDev: 3.521142 11.47471
Fixed effects: neutral ~ treatment
Value Std.Error DF t-value p-value
(Intercept) 24.81671 4.241888 8 5.850393 0.0004
treatmentFMT2 15.06479 5.589803 7 2.695048 0.0309
Correlation:
(Intr)
treatmentFMT2 -0.701
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-1.75054530 -0.55659466 -0.07097174 0.51610612 1.27053535
Number of Observations: 17
Number of Groups: 9
Phylogenetic
Model_phylo <- nlme::lme(fixed = phylogenetic ~ treatment, data = alpha_div_meta,
random = ~ 1 | individual)
summary(Model_phylo)Linear mixed-effects model fit by REML
Data: alpha_div_meta
AIC BIC logLik
56.31055 59.14275 -24.15527
Random effects:
Formula: ~1 | individual
(Intercept) Residual
StdDev: 0.7045591 0.8405942
Fixed effects: phylogenetic ~ treatment
Value Std.Error DF t-value p-value
(Intercept) 4.176014 0.3840968 8 10.872296 0.0000
treatmentFMT2 0.933438 0.4133828 7 2.258048 0.0585
Correlation:
(Intr)
treatmentFMT2 -0.582
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-1.1450921 -0.5911576 -0.1410070 0.4851316 2.3184128
Number of Observations: 17
Number of Groups: 9
15.1.2 Beta diversity
samples_to_keep <- sample_metadata %>%
filter(type == "Cold_intervention" & treatment %in% c("FMT1", "FMT2")) %>%
select(sample) %>%
pull()
subset_meta <- sample_metadata %>%
filter(type == "Cold_intervention" & treatment %in% c("FMT1", "FMT2"))Richness
richness <- as.matrix(beta_q0n$S)
richness <- as.dist(richness[rownames(richness) %in% samples_to_keep,
colnames(richness) %in% samples_to_keep])
betadisper(richness, subset_meta$treatment) %>% permutest(.)
Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999
Response: Distances
Df Sum Sq Mean Sq F N.Perm Pr(>F)
Groups 1 0.017295 0.0172950 2.8289 999 0.093 .
Residuals 15 0.091706 0.0061137
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
adonis2(richness ~ treatment,
data = subset_meta %>% arrange(match(sample,labels(richness))),
permutations = 999,
strata = subset_meta %>% arrange(match(sample,labels(richness))) %>% pull(individual)) %>%
broom::tidy() %>%
tt()| term | df | SumOfSqs | R2 | statistic | p.value |
|---|---|---|---|---|---|
| Model | 1 | 0.3571397 | 0.07959561 | 1.297184 | 0.00390625 |
| Residual | 15 | 4.1297869 | 0.92040439 | NA | NA |
| Total | 16 | 4.4869265 | 1.00000000 | NA | NA |
Neutral
neutral <- as.matrix(beta_q1n$S)
neutral <- as.dist(neutral[rownames(neutral) %in% samples_to_keep,
colnames(neutral) %in% samples_to_keep])
betadisper(neutral, subset_meta$treatment) %>% permutest(.)
Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999
Response: Distances
Df Sum Sq Mean Sq F N.Perm Pr(>F)
Groups 1 0.009753 0.0097526 0.7091 999 0.42
Residuals 15 0.206312 0.0137541
adonis2(neutral ~ treatment,
data = subset_meta %>% arrange(match(sample,labels(neutral))),
permutations = 999,
strata = subset_meta %>% arrange(match(sample,labels(neutral))) %>% pull(individual)) %>%
broom::tidy() %>%
tt()| term | df | SumOfSqs | R2 | statistic | p.value |
|---|---|---|---|---|---|
| Model | 1 | 0.3157079 | 0.08117526 | 1.325203 | 0.00390625 |
| Residual | 15 | 3.5735051 | 0.91882474 | NA | NA |
| Total | 16 | 3.8892130 | 1.00000000 | NA | NA |
Phylogenetic
phylo <- as.matrix(beta_q1p$S)
phylo <- as.dist(phylo[rownames(phylo) %in% samples_to_keep,
colnames(phylo) %in% samples_to_keep])
betadisper(phylo, subset_meta$treatment) %>% permutest(.)
Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999
Response: Distances
Df Sum Sq Mean Sq F N.Perm Pr(>F)
Groups 1 0.010945 0.010944 0.6593 999 0.542
Residuals 15 0.248985 0.016599
adonis2(phylo ~ treatment,
data = subset_meta %>% arrange(match(sample,labels(phylo))),
permutations = 999,
strata = subset_meta %>% arrange(match(sample,labels(phylo))) %>% pull(individual)) %>%
broom::tidy() %>%
tt()| term | df | SumOfSqs | R2 | statistic | p.value |
|---|---|---|---|---|---|
| Model | 1 | 0.06393539 | 0.09448624 | 1.565182 | 0.0703125 |
| Residual | 15 | 0.61272811 | 0.90551376 | NA | NA |
| Total | 16 | 0.67666350 | 1.00000000 | NA | NA |
NMDS
richness %>%
vegan::metaMDS(., trymax = 500, k = 2, trace=0) %>%
vegan::scores() %>%
as_tibble(., rownames = "sample") %>%
dplyr::left_join(subset_meta, by = join_by(sample == sample)) %>%
group_by(treatment) %>%
mutate(x_cen = mean(NMDS1, na.rm = TRUE)) %>%
mutate(y_cen = mean(NMDS2, na.rm = TRUE)) %>%
ungroup() %>%
ggplot(aes(x = NMDS1, y = NMDS2, color = treatment)) +
geom_point(size = 4) +
scale_color_manual(name="Time point",values=c("#76b183", '#40714b50')) +
geom_segment(aes(x = x_cen, y = y_cen, xend = NMDS1, yend = NMDS2), alpha = 0.9, show.legend = FALSE) +
theme(
axis.title = element_text(size = 12, face = "bold"),
axis.text = element_text(size = 10),
panel.background = element_blank(),
axis.line = element_line(size = 0.5, linetype = "solid", colour = "black"),
legend.text = element_text(size = 10),
legend.title = element_text(size = 12),
legend.position = "right", legend.box = "vertical"
)neutral %>%
vegan::metaMDS(., trymax = 500, k = 2, trace=0) %>%
vegan::scores() %>%
as_tibble(., rownames = "sample") %>%
dplyr::left_join(subset_meta, by = join_by(sample == sample)) %>%
group_by(treatment) %>%
mutate(x_cen = mean(NMDS1, na.rm = TRUE)) %>%
mutate(y_cen = mean(NMDS2, na.rm = TRUE)) %>%
ungroup() %>%
ggplot(aes(x = NMDS1, y = NMDS2, color = treatment)) +
geom_point(size = 4) +
scale_color_manual(name="Time point",values=c("#76b183", '#40714b50')) +
geom_segment(aes(x = x_cen, y = y_cen, xend = NMDS1, yend = NMDS2), alpha = 0.9, show.legend = FALSE) +
theme(
axis.title = element_text(size = 12, face = "bold"),
axis.text = element_text(size = 10),
panel.background = element_blank(),
axis.line = element_line(size = 0.5, linetype = "solid", colour = "black"),
legend.text = element_text(size = 10),
legend.title = element_text(size = 12),
legend.position = "right", legend.box = "vertical"
)phylo %>%
vegan::metaMDS(., trymax = 500, k = 2, trace=0) %>%
vegan::scores() %>%
as_tibble(., rownames = "sample") %>%
dplyr::left_join(subset_meta, by = join_by(sample == sample)) %>%
group_by(treatment) %>%
mutate(x_cen = mean(NMDS1, na.rm = TRUE)) %>%
mutate(y_cen = mean(NMDS2, na.rm = TRUE)) %>%
ungroup() %>%
ggplot(aes(x = NMDS1, y = NMDS2, color = treatment)) +
geom_point(size = 4) +
scale_color_manual(name="Time point",values=c("#76b183", '#40714b50')) +
geom_segment(aes(x = x_cen, y = y_cen, xend = NMDS1, yend = NMDS2), alpha = 0.9, show.legend = FALSE) +
theme(
axis.title = element_text(size = 12, face = "bold"),
axis.text = element_text(size = 10),
panel.background = element_blank(),
axis.line = element_line(size = 0.5, linetype = "solid", colour = "black"),
legend.text = element_text(size = 10),
legend.title = element_text(size = 12),
legend.position = "right", legend.box = "vertical"
)15.2 Do FMT change the microbial community compared to antibiotics and acclimation?
alpha_div_meta <- alpha_div %>%
left_join(sample_metadata, by = join_by(sample == sample))%>%
filter(type == "Cold_intervention" & treatment %in% c("Antibiotics", "Acclimation","FMT1","FMT2") ) 15.2.1 Alpha diversity
Richness
# Modelq0GLMMNB <- glmer.nb(richness ~ treatment + (1|individual), data = alpha_div_meta)
# summary(Modelq0GLMMNB)
#emmeans(Modelq0GLMMNB, pairwise ~ treatment)
model_nb <- MASS::glm.nb(richness ~ treatment, data = alpha_div_meta)
summary(model_nb)
Call:
MASS::glm.nb(formula = richness ~ treatment, data = alpha_div_meta,
init.theta = 2.267478601, link = log)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 3.8140 0.2268 16.814 <2e-16 ***
treatmentAntibiotics -1.0895 0.3388 -3.216 0.0013 **
treatmentFMT1 0.1275 0.3302 0.386 0.6993
treatmentFMT2 0.5355 0.3192 1.678 0.0934 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for Negative Binomial(2.2675) family taken to be 1)
Null deviance: 58.599 on 33 degrees of freedom
Residual deviance: 37.469 on 30 degrees of freedom
AIC: 323.67
Number of Fisher Scoring iterations: 1
Theta: 2.267
Std. Err.: 0.586
2 x log-likelihood: -313.673
$emmeans
treatment emmean SE df asymp.LCL asymp.UCL
Acclimation 3.81 0.227 Inf 3.37 4.26
Antibiotics 2.72 0.252 Inf 2.23 3.22
FMT1 3.94 0.240 Inf 3.47 4.41
FMT2 4.35 0.225 Inf 3.91 4.79
Results are given on the log (not the response) scale.
Confidence level used: 0.95
$contrasts
contrast estimate SE df z.ratio p.value
Acclimation - Antibiotics 1.089 0.339 Inf 3.216 0.0071
Acclimation - FMT1 -0.128 0.330 Inf -0.386 0.9804
Acclimation - FMT2 -0.536 0.319 Inf -1.678 0.3355
Antibiotics - FMT1 -1.217 0.348 Inf -3.500 0.0026
Antibiotics - FMT2 -1.625 0.337 Inf -4.818 <.0001
FMT1 - FMT2 -0.408 0.329 Inf -1.241 0.6004
Results are given on the log (not the response) scale.
P value adjustment: tukey method for comparing a family of 4 estimates
Neutral
Model_neutral <- lme(fixed = neutral ~ treatment, data = alpha_div_meta,
random = ~ 1 | individual)
summary(Model_neutral)Linear mixed-effects model fit by REML
Data: alpha_div_meta
AIC BIC logLik
243.2135 251.6207 -115.6068
Random effects:
Formula: ~1 | individual
(Intercept) Residual
StdDev: 4.655396 9.025318
Fixed effects: neutral ~ treatment
Value Std.Error DF t-value p-value
(Intercept) 17.398983 3.385083 22 5.139899 0.0000
treatmentAntibiotics -9.707909 4.404610 22 -2.204034 0.0383
treatmentFMT1 7.165981 4.404610 22 1.626927 0.1180
treatmentFMT2 22.482511 4.254575 22 5.284313 0.0000
Correlation:
(Intr) trtmnA trFMT1
treatmentAntibiotics -0.607
treatmentFMT1 -0.607 0.465
treatmentFMT2 -0.628 0.483 0.483
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-2.19758428 -0.47944101 -0.03077563 0.31591722 1.64995087
Number of Observations: 34
Number of Groups: 9
$emmeans
treatment emmean SE df lower.CL upper.CL
Acclimation 17.40 3.39 8 9.593 25.2
Antibiotics 7.69 3.57 8 -0.546 15.9
FMT1 24.56 3.57 8 16.328 32.8
FMT2 39.88 3.39 8 32.075 47.7
Degrees-of-freedom method: containment
Confidence level used: 0.95
$contrasts
contrast estimate SE df t.ratio p.value
Acclimation - Antibiotics 9.71 4.40 22 2.204 0.1533
Acclimation - FMT1 -7.17 4.40 22 -1.627 0.3848
Acclimation - FMT2 -22.48 4.25 22 -5.284 0.0001
Antibiotics - FMT1 -16.87 4.55 22 -3.704 0.0063
Antibiotics - FMT2 -32.19 4.40 22 -7.308 <.0001
FMT1 - FMT2 -15.32 4.40 22 -3.477 0.0107
Degrees-of-freedom method: containment
P value adjustment: tukey method for comparing a family of 4 estimates
Model_neutral <- lme(fixed = neutral ~ treatment, data = alpha_div_meta,
random = ~ 1 | individual)
summary(Model_neutral)Linear mixed-effects model fit by REML
Data: alpha_div_meta
AIC BIC logLik
243.2135 251.6207 -115.6068
Random effects:
Formula: ~1 | individual
(Intercept) Residual
StdDev: 4.655396 9.025318
Fixed effects: neutral ~ treatment
Value Std.Error DF t-value p-value
(Intercept) 17.398983 3.385083 22 5.139899 0.0000
treatmentAntibiotics -9.707909 4.404610 22 -2.204034 0.0383
treatmentFMT1 7.165981 4.404610 22 1.626927 0.1180
treatmentFMT2 22.482511 4.254575 22 5.284313 0.0000
Correlation:
(Intr) trtmnA trFMT1
treatmentAntibiotics -0.607
treatmentFMT1 -0.607 0.465
treatmentFMT2 -0.628 0.483 0.483
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-2.19758428 -0.47944101 -0.03077563 0.31591722 1.64995087
Number of Observations: 34
Number of Groups: 9
$emmeans
treatment emmean SE df lower.CL upper.CL
Acclimation 17.40 3.39 8 9.593 25.2
Antibiotics 7.69 3.57 8 -0.546 15.9
FMT1 24.56 3.57 8 16.328 32.8
FMT2 39.88 3.39 8 32.075 47.7
Degrees-of-freedom method: containment
Confidence level used: 0.95
$contrasts
contrast estimate SE df t.ratio p.value
Acclimation - Antibiotics 9.71 4.40 22 2.204 0.1533
Acclimation - FMT1 -7.17 4.40 22 -1.627 0.3848
Acclimation - FMT2 -22.48 4.25 22 -5.284 0.0001
Antibiotics - FMT1 -16.87 4.55 22 -3.704 0.0063
Antibiotics - FMT2 -32.19 4.40 22 -7.308 <.0001
FMT1 - FMT2 -15.32 4.40 22 -3.477 0.0107
Degrees-of-freedom method: containment
P value adjustment: tukey method for comparing a family of 4 estimates
Phylogenetic
Model_phylo <- lme(fixed = phylogenetic ~ treatment, data = alpha_div_meta,
random = ~ 1 | individual)
summary(Model_phylo)Linear mixed-effects model fit by REML
Data: alpha_div_meta
AIC BIC logLik
130.0245 138.4317 -59.01224
Random effects:
Formula: ~1 | individual
(Intercept) Residual
StdDev: 0.8207678 1.33387
Fixed effects: phylogenetic ~ treatment
Value Std.Error DF t-value p-value
(Intercept) 5.534169 0.5220547 22 10.600745 0.0000
treatmentAntibiotics -1.632652 0.6515261 22 -2.505889 0.0201
treatmentFMT1 -1.454635 0.6515261 22 -2.232658 0.0361
treatmentFMT2 -0.424717 0.6287926 22 -0.675448 0.5064
Correlation:
(Intr) trtmnA trFMT1
treatmentAntibiotics -0.581
treatmentFMT1 -0.581 0.464
treatmentFMT2 -0.602 0.483 0.483
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-2.06341294 -0.41689413 -0.09586612 0.41091089 2.13759464
Number of Observations: 34
Number of Groups: 9
$emmeans
treatment emmean SE df lower.CL upper.CL
Acclimation 5.53 0.522 8 4.33 6.74
Antibiotics 3.90 0.549 8 2.64 5.17
FMT1 4.08 0.549 8 2.81 5.35
FMT2 5.11 0.522 8 3.91 6.31
Degrees-of-freedom method: containment
Confidence level used: 0.95
$contrasts
contrast estimate SE df t.ratio p.value
Acclimation - Antibiotics 1.633 0.652 22 2.506 0.0867
Acclimation - FMT1 1.455 0.652 22 2.233 0.1456
Acclimation - FMT2 0.425 0.629 22 0.675 0.9053
Antibiotics - FMT1 -0.178 0.674 22 -0.264 0.9934
Antibiotics - FMT2 -1.208 0.652 22 -1.854 0.2761
FMT1 - FMT2 -1.030 0.652 22 -1.581 0.4095
Degrees-of-freedom method: containment
P value adjustment: tukey method for comparing a family of 4 estimates
15.2.2 Beta diversity
samples_to_keep <- sample_metadata %>%
filter(type == "Cold_intervention" & treatment %in% c("Acclimation", "Antibiotics", "FMT1", "FMT2")) %>%
select(sample) %>%
pull()
subset_meta <- sample_metadata %>%
filter(type == "Cold_intervention" & treatment %in% c("Acclimation", "Antibiotics", "FMT1", "FMT2"))Richness
richness <- as.matrix(beta_q0n$S)
richness <- as.dist(richness[rownames(richness) %in% samples_to_keep,
colnames(richness) %in% samples_to_keep])
betadisper(richness, subset_meta$treatment) %>% permutest(.)
Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999
Response: Distances
Df Sum Sq Mean Sq F N.Perm Pr(>F)
Groups 3 0.096421 0.032140 4.8803 999 0.011 *
Residuals 30 0.197572 0.006586
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
adonis2(richness ~ treatment,
data = subset_meta %>% arrange(match(sample,labels(richness))),
permutations = 999,
strata = subset_meta %>% arrange(match(sample,labels(richness))) %>% pull(individual)) %>%
broom::tidy() %>%
tt()| term | df | SumOfSqs | R2 | statistic | p.value |
|---|---|---|---|---|---|
| Model | 3 | 2.683764 | 0.2155119 | 2.747165 | 0.001 |
| Residual | 30 | 9.769211 | 0.7844881 | NA | NA |
| Total | 33 | 12.452975 | 1.0000000 | NA | NA |
pairs Df SumsOfSqs F.Model R2 p.value p.adjusted sig
1 Acclimation vs Antibiotics 1 0.8449464 2.247427 0.13030507 0.003 0.018 .
2 Acclimation vs FMT1 1 0.9551308 2.926054 0.16322910 0.001 0.006 *
3 Acclimation vs FMT2 1 0.9130048 3.195028 0.16645080 0.001 0.006 *
4 Antibiotics vs FMT1 1 0.9852559 2.654101 0.15936620 0.004 0.024 .
5 Antibiotics vs FMT2 1 1.3163001 4.051926 0.21267802 0.001 0.006 *
6 FMT1 vs FMT2 1 0.3571397 1.297184 0.07959561 0.123 0.738
Neutral
neutral <- as.matrix(beta_q1n$S)
neutral <- as.dist(neutral[rownames(neutral) %in% samples_to_keep,
colnames(neutral) %in% samples_to_keep])
betadisper(neutral, subset_meta$treatment) %>% permutest(.)
Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999
Response: Distances
Df Sum Sq Mean Sq F N.Perm Pr(>F)
Groups 3 0.10156 0.033852 2.4329 999 0.08 .
Residuals 30 0.41743 0.013914
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
adonis2(neutral ~ treatment,
data = subset_meta %>% arrange(match(sample,labels(neutral))),
permutations = 999,
strata = subset_meta %>% arrange(match(sample,labels(neutral))) %>% pull(individual)) %>%
broom::tidy() %>%
tt()| term | df | SumOfSqs | R2 | statistic | p.value |
|---|---|---|---|---|---|
| Model | 3 | 3.379624 | 0.2803282 | 3.895223 | 0.001 |
| Residual | 30 | 8.676329 | 0.7196718 | NA | NA |
| Total | 33 | 12.055953 | 1.0000000 | NA | NA |
pairs Df SumsOfSqs F.Model R2 p.value p.adjusted sig
1 Acclimation vs Antibiotics 1 0.8963625 2.634901 0.14941400 0.002 0.012 .
2 Acclimation vs FMT1 1 1.3127773 4.629826 0.23585668 0.001 0.006 *
3 Acclimation vs FMT2 1 1.3540292 5.339808 0.25022756 0.001 0.006 *
4 Antibiotics vs FMT1 1 1.3354906 4.047671 0.22427663 0.002 0.012 .
5 Antibiotics vs FMT2 1 1.5437899 5.235421 0.25872559 0.001 0.006 *
6 FMT1 vs FMT2 1 0.3157079 1.325203 0.08117526 0.153 0.918
Phylogenetic
phylo <- as.matrix(beta_q1p$S)
phylo <- as.dist(phylo[rownames(phylo) %in% samples_to_keep,
colnames(phylo) %in% samples_to_keep])
betadisper(phylo, subset_meta$treatment) %>% permutest(.)
Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999
Response: Distances
Df Sum Sq Mean Sq F N.Perm Pr(>F)
Groups 3 0.46252 0.154173 6.1575 999 0.003 **
Residuals 30 0.75115 0.025038
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
adonis2(phylo ~ treatment,
data = subset_meta %>% arrange(match(sample,labels(phylo))),
permutations = 999,
strata = subset_meta %>% arrange(match(sample,labels(phylo))) %>% pull(individual)) %>%
broom::tidy() %>%
tt()| term | df | SumOfSqs | R2 | statistic | p.value |
|---|---|---|---|---|---|
| Model | 3 | 1.912526 | 0.381447 | 6.166764 | 0.001 |
| Residual | 30 | 3.101345 | 0.618553 | NA | NA |
| Total | 33 | 5.013871 | 1.000000 | NA | NA |
pairs Df SumsOfSqs F.Model R2 p.value p.adjusted sig
1 Acclimation vs Antibiotics 1 0.72982793 4.398998 0.22676417 0.002 0.012 .
2 Acclimation vs FMT1 1 0.25319427 3.273842 0.17915456 0.037 0.222
3 Acclimation vs FMT2 1 0.36496892 6.396667 0.28560797 0.003 0.018 .
4 Antibiotics vs FMT1 1 1.12675209 7.208093 0.33987463 0.002 0.012 .
5 Antibiotics vs FMT2 1 1.33118440 10.285949 0.40678516 0.002 0.012 .
6 FMT1 vs FMT2 1 0.06393539 1.565182 0.09448624 0.163 0.978
15.3 Is the gut microbiota similar to the inoculum after FMT?
15.3.1 Alpha diversity
alpha_div_meta <- alpha_div %>%
left_join(sample_metadata, by = join_by(sample == sample))%>%
filter(type == "Cold_intervention" & treatment %in% c("Acclimation", "Antibiotics", "Inoculum", "FMT1", "FMT2") )
alpha_div_meta$treatment <- factor(alpha_div_meta$treatment, levels=c("Acclimation","Antibiotics","Inoculum", "FMT1", "FMT2"))
alpha_div %>%
pivot_longer(-sample, names_to = "metric", values_to = "value") %>%
left_join(., sample_metadata, by = "sample") %>%
mutate(metric=factor(metric,levels=c("richness","neutral","phylogenetic"))) %>%
filter(type=="Cold_intervention" & treatment %in% c("Acclimation", "Antibiotics", "Inoculum", "FMT1", "FMT2")) %>%
ggplot(aes(y = value, x = treatment, color=treatment, fill=treatment)) +
geom_jitter(width = 0.2, show.legend = FALSE) +
geom_boxplot(width = 0.5, alpha=0.5, outlier.shape = NA, show.legend = FALSE) +
scale_color_manual(name="Time point",values=c('#008080',"#003a45", "#d5b52c", "#76b183",'#40714b50')) +
scale_fill_manual(name="Time point",values=c('#008080',"#003a45", "#d5b52c", "#76b183",'#40714b50')) +
facet_wrap(. ~ metric, scales = "free") +
theme_classic() +
theme(
strip.background = element_blank(),
panel.grid.minor.x = element_line(size = .1, color = "grey"),
axis.text = element_text(size = 12),
axis.text.x = element_text(angle = 45, hjust = 1),
axis.title.y = element_text(size = 14),
axis.title.x = element_blank(),
strip.text = element_text(size = 16, lineheight = 0.6)
) +
ylab("Alpha diversity")alpha_div_meta <- alpha_div %>%
left_join(sample_metadata, by = join_by(sample == sample))%>%
filter(type == "Cold_intervention" & treatment %in% c("Inoculum", "FMT1", "FMT2") )Richness
Modelq0GLMMNB <- glmer.nb(richness ~ treatment+(1|individual), data = alpha_div_meta)
summary(Modelq0GLMMNB)Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) ['glmerMod']
Family: Negative Binomial(6.2707) ( log )
Formula: richness ~ treatment + (1 | individual)
Data: alpha_div_meta
AIC BIC logLik deviance df.resid
302.8 309.8 -146.4 292.8 25
Scaled residuals:
Min 1Q Median 3Q Max
-2.04296 -0.55690 -0.04598 0.41609 2.18068
Random effects:
Groups Name Variance Std.Dev.
individual (Intercept) 4.203e-12 2.05e-06
Number of obs: 30, groups: individual, 9
Fixed effects:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 3.9416 0.1495 26.359 < 2e-16 ***
treatmentFMT2 0.4080 0.2038 2.002 0.045252 *
treatmentInoculum 0.7189 0.1880 3.824 0.000132 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Correlation of Fixed Effects:
(Intr) trFMT2
tretmntFMT2 -0.734
trtmntInclm -0.795 0.584
optimizer (Nelder_Mead) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')
Neutral
Model_neutral <- lme(fixed = neutral ~ treatment, data = alpha_div_meta,
random = ~ 1 | individual)
summary(Model_neutral)Linear mixed-effects model fit by REML
Data: alpha_div_meta
AIC BIC logLik
231.6482 238.1274 -110.8241
Random effects:
Formula: ~1 | individual
(Intercept) Residual
StdDev: 5.999193 11.81926
Fixed effects: neutral ~ treatment
Value Std.Error DF t-value p-value
(Intercept) 24.92148 4.663457 19 5.343992 0.0000
treatmentFMT2 14.96002 5.768065 19 2.593594 0.0178
treatmentInoculum 21.85949 5.444172 19 4.015210 0.0007
Correlation:
(Intr) trFMT2
treatmentFMT2 -0.660
treatmentInoculum -0.705 0.570
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-2.18205314 -0.44648649 -0.05242603 0.48061393 1.78093930
Number of Observations: 30
Number of Groups: 9
Phylogenetic
Model_phylo <- lme(fixed = phylogenetic ~ treatment, data = alpha_div_meta,
random = ~ 1 | individual)
summary(Model_phylo)Linear mixed-effects model fit by REML
Data: alpha_div_meta
AIC BIC logLik
89.12096 95.60014 -39.56048
Random effects:
Formula: ~1 | individual
(Intercept) Residual
StdDev: 0.8687014 0.713253
Fixed effects: phylogenetic ~ treatment
Value Std.Error DF t-value p-value
(Intercept) 4.119285 0.3865820 19 10.655656 0.0000
treatmentFMT2 0.990167 0.3494597 19 2.833423 0.0106
treatmentInoculum 1.796914 0.3376900 19 5.321194 0.0000
Correlation:
(Intr) trFMT2
treatmentFMT2 -0.486
treatmentInoculum -0.512 0.566
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-1.60112262 -0.56309132 -0.04618045 0.47823718 2.30187547
Number of Observations: 30
Number of Groups: 9
15.3.2 Beta diversity
samples_to_keep <- sample_metadata %>%
filter(type == "Cold_intervention" & treatment %in% c("Inoculum", "FMT1", "FMT2") ) %>%
select(sample) %>%
pull()
subset_meta <- sample_metadata %>%
filter(type == "Cold_intervention" & treatment %in% c("Inoculum", "FMT1", "FMT2") )Richness
richness <- as.matrix(beta_q0n$S)
richness <- as.dist(richness[rownames(richness) %in% samples_to_keep,
colnames(richness) %in% samples_to_keep])
betadisper(richness, subset_meta$treatment) %>% permutest(.)
Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999
Response: Distances
Df Sum Sq Mean Sq F N.Perm Pr(>F)
Groups 2 0.098367 0.049184 6.3083 999 0.004 **
Residuals 27 0.210508 0.007797
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
adonis2(richness ~ treatment,
data = subset_meta %>% arrange(match(sample,labels(richness))),
permutations = 999,
strata = subset_meta %>% arrange(match(sample,labels(richness))) %>% pull(individual)) %>%
broom::tidy() %>%
tt()| term | df | SumOfSqs | R2 | statistic | p.value |
|---|---|---|---|---|---|
| Model | 2 | 1.539185 | 0.2007101 | 3.389991 | 0.001 |
| Residual | 27 | 6.129515 | 0.7992899 | NA | NA |
| Total | 29 | 7.668700 | 1.0000000 | NA | NA |
pairs Df SumsOfSqs F.Model R2 p.value p.adjusted sig
1 Inoculum vs FMT1 1 1.0509630 4.724291 0.19913308 0.001 0.003 *
2 Inoculum vs FMT2 1 0.8197254 4.201012 0.17358829 0.001 0.003 *
3 FMT1 vs FMT2 1 0.3571397 1.297184 0.07959561 0.122 0.366
Neutral
neutral <- as.matrix(beta_q1n$S)
neutral <- as.dist(neutral[rownames(neutral) %in% samples_to_keep,
colnames(neutral) %in% samples_to_keep])
betadisper(neutral, subset_meta$treatment) %>% permutest(.)
Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999
Response: Distances
Df Sum Sq Mean Sq F N.Perm Pr(>F)
Groups 2 0.03502 0.017509 1.2784 999 0.291
Residuals 27 0.36980 0.013696
adonis2(neutral ~ treatment,
data = subset_meta %>% arrange(match(sample,labels(neutral))),
permutations = 999,
strata = subset_meta %>% arrange(match(sample,labels(neutral))) %>% pull(individual)) %>%
broom::tidy() %>%
tt()| term | df | SumOfSqs | R2 | statistic | p.value |
|---|---|---|---|---|---|
| Model | 2 | 1.462216 | 0.2049975 | 3.481079 | 0.001 |
| Residual | 27 | 5.670632 | 0.7950025 | NA | NA |
| Total | 29 | 7.132848 | 1.0000000 | NA | NA |
pairs Df SumsOfSqs F.Model R2 p.value p.adjusted sig
1 Inoculum vs FMT1 1 1.0077208 4.808422 0.20196308 0.001 0.003 *
2 Inoculum vs FMT2 1 0.7880599 4.163185 0.17229454 0.001 0.003 *
3 FMT1 vs FMT2 1 0.3157079 1.325203 0.08117526 0.172 0.516
Phylogenetic
phylo <- as.matrix(beta_q1p$S)
phylo <- as.dist(phylo[rownames(phylo) %in% samples_to_keep,
colnames(phylo) %in% samples_to_keep])
betadisper(phylo, subset_meta$treatment) %>% permutest(.)
Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999
Response: Distances
Df Sum Sq Mean Sq F N.Perm Pr(>F)
Groups 2 0.01119 0.0055948 0.3668 999 0.72
Residuals 27 0.41184 0.0152533
adonis2(phylo ~ treatment,
data = subset_meta %>% arrange(match(sample,labels(phylo))),
permutations = 999,
strata = subset_meta %>% arrange(match(sample,labels(phylo))) %>% pull(individual)) %>%
broom::tidy() %>%
tt()| term | df | SumOfSqs | R2 | statistic | p.value |
|---|---|---|---|---|---|
| Model | 2 | 0.1936316 | 0.1519883 | 2.419591 | 0.001 |
| Residual | 27 | 1.0803587 | 0.8480117 | NA | NA |
| Total | 29 | 1.2739903 | 1.0000000 | NA | NA |
pairs Df SumsOfSqs F.Model R2 p.value p.adjusted sig
1 Inoculum vs FMT1 1 0.11166475 2.363709 0.11064134 0.038 0.114
2 Inoculum vs FMT2 1 0.10804939 3.322530 0.14246010 0.013 0.039 .
3 FMT1 vs FMT2 1 0.06393539 1.565182 0.09448624 0.151 0.453
NMDS
samples_to_keep <- sample_metadata %>%
filter(type == "Cold_intervention" & treatment %in% c("Acclimation","Antibiotics","Inoculum", "FMT1", "FMT2") ) %>%
select(sample) %>%
pull()
subset_meta <- sample_metadata %>%
filter(type == "Cold_intervention" & treatment %in% c("Acclimation","Antibiotics","Inoculum", "FMT1", "FMT2") )
alpha_div_meta$treatment <- factor(alpha_div_meta$treatment, levels=c("Acclimation","Antibiotics","Inoculum", "FMT1", "FMT2"))
richness <- as.matrix(beta_q0n$S)
richness <- as.dist(richness[rownames(richness) %in% samples_to_keep,
colnames(richness) %in% samples_to_keep])
neutral <- as.matrix(beta_q1n$S)
neutral <- as.dist(neutral[rownames(neutral) %in% samples_to_keep,
colnames(neutral) %in% samples_to_keep])
phylo <- as.matrix(beta_q1p$S)
phylo <- as.dist(phylo[rownames(phylo) %in% samples_to_keep,
colnames(phylo) %in% samples_to_keep])richness %>%
vegan::metaMDS(., trymax = 500, k = 2, trace=0) %>%
vegan::scores() %>%
as_tibble(., rownames = "sample") %>%
dplyr::left_join(subset_meta, by = join_by(sample == sample)) %>%
group_by(treatment) %>%
mutate(x_cen = mean(NMDS1, na.rm = TRUE)) %>%
mutate(y_cen = mean(NMDS2, na.rm = TRUE)) %>%
ungroup() %>%
ggplot(aes(x = NMDS1, y = NMDS2, color = treatment)) +
geom_point(size = 3) +
scale_color_manual(name="Time point",values=c('#008080',"#003a45", "#d5b52c", "#76b183",'#40714b50')) +
geom_segment(aes(x = x_cen, y = y_cen, xend = NMDS1, yend = NMDS2), alpha = 0.5, show.legend = FALSE) +
theme(
axis.title = element_text(size = 12, face = "bold"),
axis.text = element_text(size = 10),
panel.background = element_blank(),
axis.line = element_line(size = 0.5, linetype = "solid", colour = "black"),
legend.text = element_text(size = 10),
legend.title = element_text(size = 12),
legend.position = "right", legend.box = "vertical"
)neutral %>%
vegan::metaMDS(., trymax = 500, k = 2, trace=0) %>%
vegan::scores() %>%
as_tibble(., rownames = "sample") %>%
dplyr::left_join(subset_meta, by = join_by(sample == sample)) %>%
group_by(treatment) %>%
mutate(x_cen = mean(NMDS1, na.rm = TRUE)) %>%
mutate(y_cen = mean(NMDS2, na.rm = TRUE)) %>%
ungroup() %>%
ggplot(aes(x = NMDS1, y = NMDS2, color = treatment)) +
geom_point(size = 3) +
scale_color_manual(name="Time point",values=c('#008080',"#003a45", "#d5b52c", "#76b183",'#40714b50')) +
geom_segment(aes(x = x_cen, y = y_cen, xend = NMDS1, yend = NMDS2), alpha = 0.5, show.legend = FALSE) +
theme(
axis.title = element_text(size = 12, face = "bold"),
axis.text = element_text(size = 10),
panel.background = element_blank(),
axis.line = element_line(size = 0.5, linetype = "solid", colour = "black"),
legend.text = element_text(size = 10),
legend.title = element_text(size = 12),
legend.position = "right", legend.box = "vertical"
)phylo %>%
vegan::metaMDS(., trymax = 500, k = 2, trace=0) %>%
vegan::scores() %>%
as_tibble(., rownames = "sample") %>%
dplyr::left_join(subset_meta, by = join_by(sample == sample)) %>%
group_by(treatment) %>%
mutate(x_cen = mean(NMDS1, na.rm = TRUE)) %>%
mutate(y_cen = mean(NMDS2, na.rm = TRUE)) %>%
ungroup() %>%
ggplot(aes(x = NMDS1, y = NMDS2, color = treatment)) +
geom_point(size = 3) +
scale_color_manual(name="Time point",values=c('#008080',"#003a45", "#d5b52c", "#76b183",'#40714b50'))+
geom_segment(aes(x = x_cen, y = y_cen, xend = NMDS1, yend = NMDS2), alpha = 0.5, show.legend = FALSE) +
theme(
axis.title = element_text(size = 12, face = "bold"),
axis.text = element_text(size = 10),
panel.background = element_blank(),
axis.line = element_line(size = 0.5, linetype = "solid", colour = "black"),
legend.text = element_text(size = 10),
legend.title = element_text(size = 12),
legend.position = "right", legend.box = "vertical"
)15.3.2.1 Differences in the functional capacities
sample_sub <- sample_metadata %>%
filter(type == "Cold_intervention" & treatment %in% c("FMT1","FMT2", "Inoculum"))
genome_counts_filtered <- genome_counts_filt %>%
select(one_of(c("genome",sample_sub$sample)))
GIFTs_elements <- to.elements(genome_gifts,GIFT_db)
GIFTs_elements_filtered <- GIFTs_elements[rownames(GIFTs_elements) %in% genome_counts_filtered$genome,]
GIFTs_elements_filtered <- as.data.frame(GIFTs_elements_filtered) %>%
select_if(~ !is.numeric(.) || sum(.) != 0)
GIFTs_functions <- to.functions(GIFTs_elements_filtered,GIFT_db)
GIFTs_domains <- to.domains(GIFTs_functions,GIFT_db)
genome_counts_filtered_row <- genome_counts_filtered %>%
mutate_at(vars(-genome),~./sum(.)) %>%
column_to_rownames(., "genome")
GIFTs_functions_community <- to.community(GIFTs_functions,genome_counts_filtered_row,GIFT_db)GIFTs_functions_community %>%
rowMeans() %>%
as_tibble(., rownames = "sample") %>%
left_join(sample_metadata, by = join_by(sample == sample)) %>%
group_by(treatment) %>%
summarise(MCI = mean(value), sd = sd(value))# A tibble: 3 × 3
treatment MCI sd
<chr> <dbl> <dbl>
1 FMT1 0.353 0.0186
2 FMT2 0.346 0.0255
3 Inoculum 0.354 0.0374
MCI <- GIFTs_functions_community %>%
rowMeans() %>%
as_tibble(., rownames = "sample") %>%
left_join(sample_metadata, by = join_by(sample == sample))
shapiro.test(MCI$value)
Shapiro-Wilk normality test
data: MCI$value
W = 0.87186, p-value = 0.001843
Kruskal-Wallis rank sum test
data: value by treatment
Kruskal-Wallis chi-squared = 0.34491, df = 2, p-value = 0.8416
15.3.3 Inoculum vs FMT1
15.3.3.1 Structural zeros
FMT_samples <- sample_metadata %>%
filter(type == "Cold_intervention" & treatment == "FMT1") %>%
dplyr::select(sample) %>%
pull()
Donor_samples <- sample_metadata %>%
filter(type == "Cold_intervention" & treatment =="Inoculum") %>%
dplyr::select(sample) %>% pull()
sample_sub <- sample_metadata %>%
filter(type == "Cold_intervention" & treatment %in% c("FMT1", "Inoculum"))
structural_zeros <- genome_counts_filt %>%
select(one_of(c("genome",subset_meta$sample))) %>%
filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
select(genome, where(~ is.numeric(.) && sum(.) > 0)) %>%
rowwise() %>% #compute for each row (genome)
mutate(all_zeros_FMT = all(c_across(all_of(FMT_samples)) == 0)) %>%
mutate(all_zeros_Donor = all(c_across(all_of(Donor_samples)) == 0)) %>%
mutate(average_FMT = mean(c_across(all_of(FMT_samples)), na.rm = TRUE)) %>%
mutate(average_Donor = mean(c_across(all_of(Donor_samples)), na.rm = TRUE)) %>%
filter(all_zeros_FMT == TRUE || all_zeros_Donor==TRUE) %>%
mutate(present = case_when(
all_zeros_FMT & !all_zeros_Donor ~ "Inoculum",
!all_zeros_FMT & all_zeros_Donor ~ "FMT1",
!all_zeros_FMT & !all_zeros_Donor ~ "None",
TRUE ~ NA_character_
)) %>%
mutate(average = ifelse(present == "FMT1", average_FMT, average_Donor)) %>%
dplyr::select(genome, present, average) %>%
left_join(genome_metadata, by=join_by(genome==genome)) %>%
arrange(present,-average)Structural zeros in each group
fmt <- structural_zeros %>%
filter(present=="FMT1") %>%
count(phylum, name = "FMT1") %>%
arrange(desc(FMT1))
fmt_f <- structural_zeros %>%
filter(present=="FMT1") %>%
count(family, name = "FMT1") %>%
arrange(desc(FMT1)) structural_zeros %>%
filter(present=="Inoculum") %>%
count(phylum, name = "Inoculum") %>%
arrange(desc(Inoculum)) %>%
full_join(.,fmt, by="phylum" ) %>%
mutate(across(everything(), ~ replace_na(., 0))) %>%
as.data.frame() %>%
summarise(across(where(is.numeric), ~ sum(.x, na.rm = TRUE))) Inoculum FMT1
1 85 30
Phyla to which the structural zeros belong in each group
structural_zeros %>%
filter(present=="Inoculum") %>%
count(phylum, name = "Inoculum") %>%
arrange(desc(Inoculum)) %>%
full_join(.,fmt, by="phylum" ) %>%
mutate(across(everything(), ~ replace_na(., 0))) %>%
tt()| phylum | Inoculum | FMT1 |
|---|---|---|
| p__Bacillota_A | 31 | 13 |
| p__Bacillota | 18 | 7 |
| p__Pseudomonadota | 12 | 2 |
| p__Bacteroidota | 8 | 3 |
| p__Cyanobacteriota | 6 | 0 |
| p__Desulfobacterota | 3 | 1 |
| p__Verrucomicrobiota | 2 | 1 |
| p__Bacillota_B | 1 | 0 |
| p__Bacillota_C | 1 | 1 |
| p__Chlamydiota | 1 | 0 |
| p__Fusobacteriota | 1 | 0 |
| p__Spirochaetota | 1 | 0 |
| p__Actinomycetota | 0 | 1 |
| p__Campylobacterota | 0 | 1 |
Families to which the structural zeros belong in each group
structural_zeros %>%
filter(present=="Inoculum") %>%
count(family, name = "Inoculum") %>%
arrange(desc(Inoculum)) %>%
full_join(.,fmt_f, by="family" ) %>%
mutate(across(everything(), ~ replace_na(., 0))) %>%
tt()| family | Inoculum | FMT1 |
|---|---|---|
| f__Lachnospiraceae | 14 | 5 |
| f__Erysipelotrichaceae | 6 | 3 |
| f__UBA660 | 6 | 0 |
| f__Enterobacteriaceae | 5 | 1 |
| f__CAG-239 | 4 | 0 |
| f__CAG-508 | 4 | 0 |
| f__Coprobacillaceae | 4 | 0 |
| f__Gastranaerophilaceae | 4 | 0 |
| f__UBA1242 | 4 | 0 |
| f__ | 3 | 1 |
| f__Desulfovibrionaceae | 3 | 1 |
| f__Ruminococcaceae | 3 | 2 |
| f__Tannerellaceae | 3 | 0 |
| f__Akkermansiaceae | 2 | 0 |
| f__Anaerovoracaceae | 2 | 0 |
| f__Bacteroidaceae | 2 | 1 |
| f__Marinifilaceae | 2 | 0 |
| f__Oscillospiraceae | 2 | 1 |
| f__RUG14156 | 2 | 0 |
| f__UBA3830 | 2 | 0 |
| f__Brevinemataceae | 1 | 0 |
| f__Chlamydiaceae | 1 | 0 |
| f__Enterococcaceae | 1 | 2 |
| f__Fusobacteriaceae | 1 | 0 |
| f__Mycoplasmoidaceae | 1 | 1 |
| f__Peptococcaceae | 1 | 0 |
| f__Rikenellaceae | 1 | 1 |
| f__UBA1997 | 1 | 0 |
| f__UBA3700 | 0 | 2 |
| f__Acutalibacteraceae | 0 | 1 |
| f__Arcobacteraceae | 0 | 1 |
| f__CAG-274 | 0 | 1 |
| f__LL51 | 0 | 1 |
| f__Mycobacteriaceae | 0 | 1 |
| f__Pumilibacteraceae | 0 | 1 |
| f__Rhizobiaceae | 0 | 1 |
| f__Streptococcaceae | 0 | 1 |
| f__Weeksellaceae | 0 | 1 |
15.3.3.1.1 Functional capacities of the structural zeros
GIFTs_elements <- to.elements(genome_gifts,GIFT_db)
GIFTs_elements_filtered <- GIFTs_elements[rownames(GIFTs_elements) %in% structural_zeros$genome,]
GIFTs_elements_filtered <- as.data.frame(GIFTs_elements_filtered) %>%
select_if(~ !is.numeric(.) || sum(.) != 0)
#Aggregate element-level GIFTs into the function level
GIFTs_functions <- to.functions(GIFTs_elements_filtered,GIFT_db)
#Aggregate function-level GIFTs into overall Biosynthesis, Degradation and Structural GIFTs
GIFTs_domains <- to.domains(GIFTs_functions,GIFT_db)
genome_counts_row <- genome_counts_filt %>%
mutate_at(vars(-genome),~./sum(.)) %>%
filter(genome %in% structural_zeros$genome) %>%
select(one_of(c("genome",sample_sub$sample))) %>%
filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
select(genome, where(~ is.numeric(.) && sum(.) > 0)) %>%
column_to_rownames(., "genome")
GIFTs_elements_community <- to.community(GIFTs_elements_filtered,genome_counts_row,GIFT_db)
GIFTs_functions_community <- to.community(GIFTs_functions,genome_counts_row,GIFT_db)
GIFTs_domains_community <- to.community(GIFTs_domains,genome_counts_row,GIFT_db)element_gift <- GIFTs_elements_community %>%
as.data.frame() %>%
rownames_to_column(., "sample") %>%
left_join(., sample_metadata[c(9,10)], by=join_by("sample"=="sample"))uniqueGIFT_db<- unique(GIFT_db[c(2,4,5,6)]) %>% unite("Function",Function:Element, sep= "_", remove=FALSE)
significant_elements <- element_gift %>%
pivot_longer(-c(sample,treatment), names_to = "trait", values_to = "value") %>%
group_by(trait) %>%
summarise(p_value = wilcox.test(value ~ treatment)$p.value) %>%
mutate(p_adjust=p.adjust(p_value, method="BH")) %>%
filter(p_adjust < 0.05)%>%
rownames_to_column(., "Elements") %>%
left_join(.,uniqueGIFT_db[c(1,3)],by = join_by(trait == Code_element))
element_gift_t <- element_gift %>%
t() %>%
row_to_names(row_number = 1) %>%
as.data.frame() %>%
mutate_if(is.character, as.numeric) %>%
rownames_to_column(., "trait")
element_gift_filt <- subset(element_gift_t, trait %in% significant_elements$trait) %>%
t() %>%
row_to_names(row_number = 1) %>%
as.data.frame() %>%
mutate_if(is.character, as.numeric) %>%
rownames_to_column(., "sample")%>%
left_join(., sample_metadata[c(9,10)], by = join_by(sample == sample))
difference_table <- element_gift_filt %>%
select(-sample) %>%
group_by(treatment) %>%
summarise(across(everything(), mean)) %>%
t() %>%
row_to_names(row_number = 1) %>%
as.data.frame() %>%
mutate_if(is.character, as.numeric) %>%
rownames_to_column(., "Elements") %>%
left_join(.,uniqueGIFT_db[c(1,3,4)],by = join_by(Elements == Code_element)) %>%
arrange(Function) %>%
mutate(Difference=FMT1-Inoculum)%>%
mutate(group_color = ifelse(Difference <0, "Inoculum","FMT1")) difference_table %>%
ggplot(aes(x=forcats::fct_reorder(Function,Difference), y=Difference, fill=group_color)) +
geom_col() +
scale_fill_manual(
breaks=c("FMT1","Inoculum"),
values=c('#40714b', "#d5b52c")) +
geom_hline(yintercept=0) +
coord_flip()+
theme(axis.text = element_text(size = 10),
axis.title = element_text(size = 12),
legend.position = "right",
panel.background = element_blank(),
panel.grid.major = element_line(size = 0.15, linetype = 'solid',
colour = "grey"))+
xlab("Microbial Functional Capacity") +
ylab("Mean difference")+
guides(fill=guide_legend(title="Time point"))15.3.3.2 Differential abundance analysis: composition
phylo_samples <- sample_metadata %>%
filter(type == "Cold_intervention" & treatment %in% c("FMT1", "Inoculum")) %>%
column_to_rownames("sample") %>%
sample_data()
phylo_genome <- genome_counts_filt %>%
filter(!genome %in% structural_zeros$genome) %>%
select(one_of(c("genome",rownames(phylo_samples)))) %>%
filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
select(genome, where(~ is.numeric(.) && sum(.) > 0)) %>%
column_to_rownames("genome") %>%
otu_table(., taxa_are_rows = TRUE)
phylo_taxonomy <- genome_metadata %>%
filter(genome %in% rownames(phylo_genome)) %>%
column_to_rownames("genome") %>%
dplyr::select(domain,phylum,class,order,family,genus,species) %>%
as.matrix() %>%
tax_table()
physeq_genome_filtered <- phyloseq(phylo_genome, phylo_taxonomy, phylo_samples)ancombc_FMT_Donor_2803 = ancombc2(data = physeq_genome_filtered,
assay_name = "counts",
tax_level = NULL,
fix_formula = "treatment",
p_adj_method = "holm",
pseudo_sens = TRUE,
prv_cut =0,
lib_cut = 0,
s0_perc = 0.05,
group = NULL,
struc_zero = FALSE,
neg_lb = FALSE,
alpha = 0.05,
n_cl = 2,
verbose = TRUE,
global = FALSE,
pairwise = FALSE,
dunnet = FALSE,
trend = FALSE,
iter_control = list(tol = 1e-5, max_iter = 20, verbose = FALSE),
em_control = list(tol = 1e-5, max_iter = 100),
mdfdr_control = list(fwer_ctrl_method = "holm", B = 100),
trend_control = NULL)taxonomy <- data.frame(physeq_genome_filtered@tax_table) %>%
rownames_to_column(., "taxon") %>%
mutate_at(vars(order, phylum, family, genus, species), ~ str_replace(., "[dpcofgs]__", ""))
ancombc_rand_table_mag <- ancombc_FMT_Donor_2803$res %>%
dplyr::select(taxon, lfc_treatmentFMT1, p_treatmentFMT1) %>%
filter(p_treatmentFMT1 < 0.05) %>%
dplyr::arrange(p_treatmentFMT1) %>%
left_join(., genome_metadata, by = join_by(taxon == genome)) %>%
mutate_at(vars(phylum, species), ~ str_replace(., "[dpcofgs]__", ""))%>%
dplyr::arrange(lfc_treatmentFMT1)
colors_alphabetic <- read_tsv("https://raw.githubusercontent.com/earthhologenome/EHI_taxonomy_colour/main/ehi_phylum_colors.tsv") %>%
mutate_at(vars(phylum), ~ str_replace(., "[dpcofgs]__", "")) %>%
right_join(taxonomy, by=join_by(phylum == phylum)) %>%
dplyr::select(phylum, colors) %>%
mutate(colors = str_c(colors, "80")) %>% #add 80% alpha
unique() %>%
dplyr::arrange(phylum)
tax_table <- as.data.frame(unique(ancombc_rand_table_mag$phylum))
colnames(tax_table)[1] <- "phylum"
tax_color <- merge(tax_table, colors_alphabetic, by="phylum")%>%
dplyr::arrange(phylum) %>%
dplyr::select(colors) %>%
pull()Differential abundance MAGs in each group
fmt_count <- ancombc_rand_table_mag %>%
filter(lfc_treatmentFMT1<0) %>%
count(phylum, name = "FMT1") %>%
arrange(desc(FMT1))
ancombc_rand_table_mag %>%
filter(lfc_treatmentFMT1>0) %>%
count(phylum, name = "Inoculum") %>%
arrange(desc(Inoculum)) %>%
full_join(.,fmt_count, by="phylum")%>%
mutate(across(where(is.numeric), ~ replace_na(., 0))) phylum Inoculum FMT1
1 Bacillota_A 9 10
2 Bacteroidota 4 11
3 Bacillota 1 2
4 Campylobacterota 1 1
5 Desulfobacterota 1 1
6 Pseudomonadota 0 1
ancombc_rand_table_mag %>%
filter(lfc_treatmentFMT1>0) %>%
count(phylum, name = "Inoculum") %>%
arrange(desc(Inoculum)) %>%
full_join(.,fmt_count, by="phylum")%>%
mutate(across(where(is.numeric), ~ replace_na(., 0))) %>%
as.data.frame() %>%
summarise(across(where(is.numeric), ~ sum(.x, na.rm = TRUE))) Inoculum FMT1
1 16 26
ancombc_rand_table_mag%>%
mutate(genome=factor(taxon,levels=ancombc_rand_table_mag$taxon)) %>%
ggplot(., aes(x=lfc_treatmentFMT1, y=forcats::fct_reorder(genome,lfc_treatmentFMT1), fill=phylum)) + #forcats::fct_rev()
geom_col() +
scale_fill_manual(values=tax_color) +
geom_hline(yintercept=0) +
theme(panel.background = element_blank(),
axis.line = element_line(size = 0.5, linetype = "solid", colour = "black"),
axis.text.x = element_text(size = 12),
axis.text.y = element_text(size = 8),
axis.title = element_text(size = 14, face = "bold"),
legend.text = element_text(size = 12),
legend.title = element_text(size = 14, face = "bold"),
legend.position = "right", legend.box = "vertical")+
xlab("log2FoldChange") +
ylab("Species")+
guides(fill=guide_legend(title="Phylum"))
MAGs enriched in FMT on the left side and in FMT1 on the right side
Phyla of the significant MAGs
FMT1
ancombc_rand_table_mag%>%
filter(lfc_treatmentFMT1<0) %>%
count(phylum, name = "sample_count") %>%
arrange(desc(sample_count)) phylum sample_count
1 Bacteroidota 11
2 Bacillota_A 10
3 Bacillota 2
4 Campylobacterota 1
5 Desulfobacterota 1
6 Pseudomonadota 1
phylum family genus species
1 Campylobacterota f__Helicobacteraceae g__NHYM01
2 Bacteroidota f__Rikenellaceae g__Alistipes
3 Bacillota_A f__Lachnospiraceae g__JAAYNV01
4 Desulfobacterota f__Desulfovibrionaceae g__WRHT01
5 Bacteroidota f__Rikenellaceae g__Alistipes
6 Bacillota_A f__DTU072 g__
7 Bacillota f__Coprobacillaceae g__Coprobacillus
8 Bacteroidota f__Marinifilaceae g__Odoribacter
9 Bacteroidota f__UBA932 g__Egerieousia
10 Bacillota f__Erysipelotrichaceae g__Dielma
11 Bacillota_A f__Lachnospiraceae g__
12 Bacteroidota f__Tannerellaceae g__Parabacteroides
13 Bacillota_A f__Lachnospiraceae g__Hungatella_A
14 Bacillota_A f__UBA3700 g__
15 Bacillota_A f__Lachnospiraceae g__CAG-95
16 Bacillota_A f__ g__
17 Bacillota_A f__Lachnospiraceae g__Ventrimonas
18 Bacteroidota f__Marinifilaceae g__Odoribacter
19 Pseudomonadota f__CAG-239 g__CAZU01
20 Bacteroidota f__Bacteroidaceae g__Bacteroides
21 Bacillota_A f__Lachnospiraceae g__Hungatella_A
22 Bacteroidota f__Marinifilaceae g__Odoribacter
23 Bacteroidota f__Muribaculaceae g__HGM05232
24 Bacteroidota f__Bacteroidaceae g__Bacteroides
25 Bacteroidota f__Marinifilaceae g__Odoribacter
26 Bacillota_A f__Oscillospiraceae g__Oscillibacter
Inoculum
ancombc_rand_table_mag%>%
filter(lfc_treatmentFMT1>0) %>%
count(phylum, name = "sample_count") %>%
arrange(desc(sample_count)) phylum sample_count
1 Bacillota_A 9
2 Bacteroidota 4
3 Bacillota 1
4 Campylobacterota 1
5 Desulfobacterota 1
phylum family genus species
1 Bacillota_A f__Oscillospiraceae g__Pseudoflavonifractor
2 Bacillota_A f__Lachnospiraceae g__Lacrimispora
3 Bacillota f__Mycoplasmoidaceae g__Ureaplasma
4 Bacteroidota f__Bacteroidaceae g__Bacteroides
5 Bacillota_A f__Lachnospiraceae g__JALFVM01
6 Bacillota_A f__UBA3700 g__
7 Desulfobacterota f__Desulfovibrionaceae g__Bilophila
8 Bacillota_A f__Lachnospiraceae g__Blautia
9 Bacteroidota f__Tannerellaceae g__Parabacteroides
10 Bacteroidota f__Bacteroidaceae g__Bacteroides Bacteroides ovatus
11 Bacillota_A f__Ruminococcaceae g__Negativibacillus
12 Bacteroidota f__Bacteroidaceae g__
13 Bacillota_A f__Lachnospiraceae g__Eisenbergiella
14 Bacillota_A f__Lachnospiraceae g__
15 Bacillota_A f__Lachnospiraceae g__Copromonas
16 Campylobacterota f__Helicobacteraceae g__Helicobacter_J
15.3.3.3 Differences in the functional capacities
sample_sub <- sample_metadata %>%
filter(type == "Cold_intervention" & treatment %in% c("FMT1", "Inoculum"))
genome_counts_filtered <- genome_counts_filt %>%
select(one_of(c("genome",sample_sub$sample)))
GIFTs_elements <- to.elements(genome_gifts,GIFT_db)
GIFTs_elements_filtered <- GIFTs_elements[rownames(GIFTs_elements) %in% genome_counts_filtered$genome,]
GIFTs_elements_filtered <- as.data.frame(GIFTs_elements_filtered) %>%
select_if(~ !is.numeric(.) || sum(.) != 0)
GIFTs_functions <- to.functions(GIFTs_elements_filtered,GIFT_db)
GIFTs_domains <- to.domains(GIFTs_functions,GIFT_db)
genome_counts_filtered_row <- genome_counts_filtered %>%
mutate_at(vars(-genome),~./sum(.)) %>%
column_to_rownames(., "genome")
GIFTs_elements_community <- to.community(GIFTs_elements_filtered,genome_counts_filtered_row,GIFT_db)
GIFTs_functions_community <- to.community(GIFTs_functions,genome_counts_filtered_row,GIFT_db)
GIFTs_domains_community <- to.community(GIFTs_domains,genome_counts_filtered_row,GIFT_db)15.3.3.3.1 Community elements differences:
MCI
GIFTs_elements_community %>%
rowMeans() %>%
as_tibble(., rownames = "sample") %>%
left_join(sample_metadata, by = join_by(sample == sample)) %>%
group_by(treatment) %>%
summarise(MCI = mean(value), sd = sd(value))# A tibble: 2 × 3
treatment MCI sd
<chr> <dbl> <dbl>
1 FMT1 0.359 0.0214
2 Inoculum 0.351 0.0426
MCI <- GIFTs_elements_community %>%
rowMeans() %>%
as_tibble(., rownames = "sample") %>%
left_join(sample_metadata, by = join_by(sample == sample))
shapiro.test(MCI$value)
Shapiro-Wilk normality test
data: MCI$value
W = 0.93266, p-value = 0.1556
Wilcoxon rank sum exact test
data: value by treatment
W = 65, p-value = 0.3738
alternative hypothesis: true location shift is not equal to 0
element_gift <- GIFTs_elements_community %>%
as.data.frame() %>%
rownames_to_column(., "sample") %>%
left_join(., sample_metadata[c(9,10)], by=join_by("sample"=="sample"))uniqueGIFT_db<- unique(GIFT_db[c(2,4,5,6)]) %>% unite("Function",Function:Element, sep= "_", remove=FALSE)
significant_elements <- element_gift %>%
pivot_longer(-c(sample,treatment), names_to = "trait", values_to = "value") %>%
group_by(trait) %>%
summarise(p_value = wilcox.test(value ~ treatment)$p.value) %>%
mutate(p_adjust=p.adjust(p_value, method="BH")) %>%
filter(p_adjust < 0.05)%>%
rownames_to_column(., "Elements") %>%
left_join(.,uniqueGIFT_db[c(1,3)],by = join_by(trait == Code_element))
element_gift_t <- element_gift %>%
t() %>%
row_to_names(row_number = 1) %>%
as.data.frame() %>%
mutate_if(is.character, as.numeric) %>%
rownames_to_column(., "trait")
element_gift_filt <- subset(element_gift_t, trait %in% significant_elements$trait) %>%
t() %>%
row_to_names(row_number = 1) %>%
as.data.frame() %>%
mutate_if(is.character, as.numeric) %>%
rownames_to_column(., "sample")%>%
left_join(., sample_metadata[c(9,10)], by = join_by(sample == sample))
difference_table <- element_gift_filt %>%
select(-sample) %>%
group_by(treatment) %>%
summarise(across(everything(), mean)) %>%
t() %>%
row_to_names(row_number = 1) %>%
as.data.frame() %>%
mutate_if(is.character, as.numeric) %>%
rownames_to_column(., "Elements") %>%
left_join(.,uniqueGIFT_db[c(1,3,4)],by = join_by(Elements == Code_element)) %>%
arrange(Function) %>%
mutate(Difference=FMT1-Inoculum)%>%
mutate(group_color = ifelse(Difference <0, "Inoculum","FMT1")) 15.3.3.3.2 Community functions differences
MCI
GIFTs_functions_community %>%
rowMeans() %>%
as_tibble(., rownames = "sample") %>%
left_join(sample_metadata, by = join_by(sample == sample)) %>%
group_by(treatment) %>%
summarise(MCI = mean(value), sd = sd(value))# A tibble: 2 × 3
treatment MCI sd
<chr> <dbl> <dbl>
1 FMT1 0.353 0.0186
2 Inoculum 0.354 0.0374
MCI <- GIFTs_functions_community %>%
rowMeans() %>%
as_tibble(., rownames = "sample") %>%
left_join(sample_metadata, by = join_by(sample == sample))
shapiro.test(MCI$value)
Shapiro-Wilk normality test
data: MCI$value
W = 0.83167, p-value = 0.002086
Wilcoxon rank sum exact test
data: value by treatment
W = 60, p-value = 0.5951
alternative hypothesis: true location shift is not equal to 0
function_gift <- GIFTs_functions_community %>%
as.data.frame() %>%
rownames_to_column(., "sample") %>%
merge(., sample_metadata[c(9,10)], by="sample")unique_funct_db<- GIFT_db[c(3,4,5)] %>%
distinct(Code_function, .keep_all = TRUE)
significant_functional <- function_gift %>%
pivot_longer(-c(sample,treatment), names_to = "trait", values_to = "value") %>%
group_by(trait) %>%
summarise(p_value = wilcox.test(value ~ treatment)$p.value) %>%
mutate(p_adjust=p.adjust(p_value, method="BH")) %>%
filter(p_adjust < 0.05)%>%
left_join(.,unique_funct_db[c(1,3)],by = join_by(trait == Code_function))
significant_functional# A tibble: 2 × 4
trait p_value p_adjust Function
<chr> <dbl> <dbl> <chr>
1 B04 0.00454 0.0454 SCFA biosynthesis
2 B10 0.00454 0.0454 Antibiotic biosynthesis
15.3.4 Inoculum vs FMT2
15.3.4.1 Structural zeros
FMT2_samples <- sample_metadata %>%
filter(type == "Cold_intervention" & treatment == "FMT2") %>%
dplyr::select(sample) %>%
pull()
Inoculum_samples <- sample_metadata %>%
filter(type == "Cold_intervention" & treatment =="Inoculum") %>%
dplyr::select(sample) %>% pull()
sample_sub <- sample_metadata %>%
filter(type == "Cold_intervention" & treatment %in% c("FMT2", "Inoculum"))
structural_zeros <- genome_counts_filt %>%
select(one_of(c("genome",subset_meta$sample))) %>%
filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
select(genome, where(~ is.numeric(.) && sum(.) > 0)) %>%
rowwise() %>% #compute for each row (genome)
mutate(all_zeros_FMT2 = all(c_across(all_of(FMT2_samples)) == 0)) %>%
mutate(all_zeros_Donor = all(c_across(all_of(Donor_samples)) == 0)) %>%
mutate(average_FMT2 = mean(c_across(all_of(FMT2_samples)), na.rm = TRUE)) %>%
mutate(average_Donor = mean(c_across(all_of(Donor_samples)), na.rm = TRUE)) %>%
filter(all_zeros_FMT2 == TRUE || all_zeros_Donor==TRUE) %>%
mutate(present = case_when(
all_zeros_FMT2 & !all_zeros_Donor ~ "Inoculum",
!all_zeros_FMT2 & all_zeros_Donor ~ "FMT2",
!all_zeros_FMT2 & !all_zeros_Donor ~ "None",
TRUE ~ NA_character_
)) %>%
mutate(average = ifelse(present == "FMT2", average_FMT2, average_Donor)) %>%
dplyr::select(genome, present, average) %>%
left_join(genome_metadata, by=join_by(genome==genome)) %>%
arrange(present,-average)Structural zeros in each group
fmt <- structural_zeros %>%
filter(present=="FMT2") %>%
count(phylum, name = "FMT2") %>%
arrange(desc(FMT2))
fmt2_f <- structural_zeros %>%
filter(present=="FMT2") %>%
count(family, name = "FMT2") %>%
arrange(desc(FMT2)) structural_zeros %>%
filter(present=="Inoculum") %>%
count(phylum, name = "Inoculum") %>%
arrange(desc(Inoculum)) %>%
full_join(.,fmt, by="phylum" ) %>%
mutate(across(everything(), ~ replace_na(., 0))) %>%
as.data.frame() %>%
summarise(across(where(is.numeric), ~ sum(.x, na.rm = TRUE))) Inoculum FMT2
1 62 50
Phyla to which the structural zeros belong in each group
structural_zeros %>%
filter(present=="Inoculum") %>%
count(phylum, name = "Inoculum") %>%
arrange(desc(Inoculum)) %>%
full_join(.,fmt, by="phylum" ) %>%
mutate(across(everything(), ~ replace_na(., 0))) %>%
tt()| phylum | Inoculum | FMT2 |
|---|---|---|
| p__Bacillota_A | 27 | 20 |
| p__Bacillota | 17 | 8 |
| p__Pseudomonadota | 6 | 11 |
| p__Bacteroidota | 5 | 6 |
| p__Desulfobacterota | 2 | 2 |
| p__Bacillota_B | 1 | 0 |
| p__Chlamydiota | 1 | 0 |
| p__Cyanobacteriota | 1 | 0 |
| p__Fusobacteriota | 1 | 0 |
| p__Verrucomicrobiota | 1 | 2 |
| p__Bacillota_C | 0 | 1 |
Families to which the structural zeros belong in each group
structural_zeros %>%
filter(present=="Inoculum") %>%
count(family, name = "Inoculum") %>%
arrange(desc(Inoculum)) %>%
full_join(.,fmt2_f, by="family" ) %>%
mutate(across(everything(), ~ replace_na(., 0))) %>%
tt()| family | Inoculum | FMT2 |
|---|---|---|
| f__Lachnospiraceae | 11 | 9 |
| f__Erysipelotrichaceae | 6 | 5 |
| f__UBA660 | 6 | 0 |
| f__Enterobacteriaceae | 5 | 2 |
| f__CAG-508 | 3 | 0 |
| f__Ruminococcaceae | 3 | 3 |
| f__Anaerovoracaceae | 2 | 0 |
| f__Coprobacillaceae | 2 | 0 |
| f__Desulfovibrionaceae | 2 | 2 |
| f__Oscillospiraceae | 2 | 1 |
| f__Tannerellaceae | 2 | 1 |
| f__UBA1242 | 2 | 0 |
| f__ | 1 | 3 |
| f__Akkermansiaceae | 1 | 0 |
| f__Bacteroidaceae | 1 | 2 |
| f__CAG-239 | 1 | 2 |
| f__Chlamydiaceae | 1 | 0 |
| f__Clostridiaceae | 1 | 0 |
| f__Enterococcaceae | 1 | 1 |
| f__Eubacteriaceae | 1 | 0 |
| f__Fusobacteriaceae | 1 | 0 |
| f__Gastranaerophilaceae | 1 | 0 |
| f__Marinifilaceae | 1 | 0 |
| f__Mycoplasmoidaceae | 1 | 1 |
| f__Peptococcaceae | 1 | 0 |
| f__Rikenellaceae | 1 | 1 |
| f__Staphylococcaceae | 1 | 0 |
| f__UBA3700 | 1 | 2 |
| f__Anaerotignaceae | 0 | 2 |
| f__LL51 | 0 | 2 |
| f__Acutalibacteraceae | 0 | 1 |
| f__CAG-274 | 0 | 1 |
| f__CALVMC01 | 0 | 1 |
| f__Devosiaceae | 0 | 1 |
| f__RUG11792 | 0 | 1 |
| f__Rhizobiaceae | 0 | 1 |
| f__Sphingobacteriaceae | 0 | 1 |
| f__Streptococcaceae | 0 | 1 |
| f__UBA1997 | 0 | 1 |
| f__UBA3830 | 0 | 1 |
| f__Weeksellaceae | 0 | 1 |
15.3.4.1.1 Functional capacities of the structural zeros
#Aggregate bundle-level GIFTs into the compound level
GIFTs_elements <- to.elements(genome_gifts,GIFT_db)
GIFTs_elements_filtered <- GIFTs_elements[rownames(GIFTs_elements) %in% structural_zeros$genome,]
GIFTs_elements_filtered <- as.data.frame(GIFTs_elements_filtered) %>%
select_if(~ !is.numeric(.) || sum(.) != 0)
#Aggregate element-level GIFTs into the function level
GIFTs_functions <- to.functions(GIFTs_elements_filtered,GIFT_db)
#Aggregate function-level GIFTs into overall Biosynthesis, Degradation and Structural GIFTs
GIFTs_domains <- to.domains(GIFTs_functions,GIFT_db)
genome_counts_row <- genome_counts_filt %>%
mutate_at(vars(-genome),~./sum(.)) %>%
filter(genome %in% structural_zeros$genome) %>%
select(one_of(c("genome",sample_sub$sample))) %>%
filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
select(genome, where(~ is.numeric(.) && sum(.) > 0)) %>%
column_to_rownames(., "genome")
GIFTs_elements_community <- to.community(GIFTs_elements_filtered,genome_counts_row,GIFT_db)
GIFTs_functions_community <- to.community(GIFTs_functions,genome_counts_row,GIFT_db)
GIFTs_domains_community <- to.community(GIFTs_domains,genome_counts_row,GIFT_db)element_gift_inoculum <- GIFTs_elements_community %>%
as.data.frame() %>%
rownames_to_column(., "sample") %>%
left_join(., sample_metadata[c(9,10)], by=join_by("sample"=="sample"))uniqueGIFT_db<- unique(GIFT_db[c(2,4,5,6)]) %>% unite("Function",Function:Element, sep= "_", remove=FALSE)
significant_elements <- element_gift_inoculum %>%
pivot_longer(-c(sample,treatment), names_to = "trait", values_to = "value") %>%
group_by(trait) %>%
summarise(p_value = wilcox.test(value ~ treatment)$p.value) %>%
mutate(p_adjust=p.adjust(p_value, method="BH")) %>%
filter(p_adjust < 0.05)%>%
rownames_to_column(., "Elements") %>%
left_join(.,uniqueGIFT_db[c(1,3)],by = join_by(trait == Code_element))
element_gift_inoculum_t <- element_gift_inoculum %>%
t() %>%
row_to_names(row_number = 1) %>%
as.data.frame() %>%
mutate_if(is.character, as.numeric) %>%
rownames_to_column(., "trait")
element_gift_inoculum_filt <- subset(element_gift_inoculum_t, trait %in% significant_elements$trait) %>%
t() %>%
row_to_names(row_number = 1) %>%
as.data.frame() %>%
mutate_if(is.character, as.numeric) %>%
rownames_to_column(., "sample")%>%
left_join(., sample_metadata[c(9,10)], by = join_by(sample == sample))
difference_table <- element_gift_inoculum_filt %>%
select(-sample) %>%
group_by(treatment) %>%
summarise(across(everything(), mean)) %>%
t() %>%
row_to_names(row_number = 1) %>%
as.data.frame() %>%
mutate_if(is.character, as.numeric) %>%
rownames_to_column(., "Elements") %>%
left_join(.,uniqueGIFT_db[c(1,3,4)],by = join_by(Elements == Code_element)) %>%
arrange(Function) %>%
mutate(Difference=FMT2-Inoculum)%>%
mutate(group_color = ifelse(Difference <0, "Inoculum","FMT2")) difference_table %>%
ggplot(aes(x=forcats::fct_reorder(Function,Difference), y=Difference, fill=group_color)) +
geom_col() +
scale_fill_manual(
breaks=c("FMT2","Inoculum"),
values=c('#40714b50', "#d5b52c")) +
geom_hline(yintercept=0) +
coord_flip()+
theme(axis.text = element_text(size = 10),
axis.title = element_text(size = 12),
legend.position = "right",
panel.background = element_blank(),
panel.grid.major = element_line(size = 0.15, linetype = 'solid',
colour = "grey"))+
xlab("Microbial Functional Capacity") +
ylab("Mean difference")+
guides(fill=guide_legend(title="Time point"))15.3.4.2 Differential abundance analysis: composition
phylo_samples <- sample_metadata %>%
filter(type == "Cold_intervention" & treatment %in% c("FMT2", "Inoculum")) %>%
column_to_rownames("sample") %>%
sample_data()
phylo_genome <- genome_counts_filt %>%
filter(!genome %in% structural_zeros$genome) %>%
select(one_of(c("genome",rownames(phylo_samples)))) %>%
filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
select(genome, where(~ is.numeric(.) && sum(.) > 0)) %>%
column_to_rownames("genome") %>%
otu_table(., taxa_are_rows = TRUE)
phylo_taxonomy <- genome_metadata %>%
filter(genome %in% rownames(phylo_genome)) %>%
column_to_rownames("genome") %>%
dplyr::select(domain,phylum,class,order,family,genus,species) %>%
as.matrix() %>%
tax_table()
physeq_genome_filtered <- phyloseq(phylo_genome, phylo_taxonomy, phylo_samples)ancombc_FMT2_Donor_2803 = ancombc2(data = physeq_genome_filtered,
assay_name = "counts",
tax_level = NULL,
fix_formula = "treatment",
p_adj_method = "holm",
pseudo_sens = TRUE,
prv_cut =0,
lib_cut = 0,
s0_perc = 0.05,
group = NULL,
struc_zero = FALSE,
neg_lb = FALSE,
alpha = 0.05,
n_cl = 2,
verbose = TRUE,
global = FALSE,
pairwise = FALSE,
dunnet = FALSE,
trend = FALSE,
iter_control = list(tol = 1e-5, max_iter = 20, verbose = FALSE),
em_control = list(tol = 1e-5, max_iter = 100),
mdfdr_control = list(fwer_ctrl_method = "holm", B = 100),
trend_control = NULL)taxonomy <- data.frame(physeq_genome_filtered@tax_table) %>%
rownames_to_column(., "taxon") %>%
mutate_at(vars(order, phylum, family, genus, species), ~ str_replace(., "[dpcofgs]__", ""))
ancombc_rand_table_mag <- ancombc_FMT2_Donor_2803$res %>%
dplyr::select(taxon, lfc_treatmentFMT2, p_treatmentFMT2) %>%
filter(p_treatmentFMT2 < 0.05) %>%
dplyr::arrange(p_treatmentFMT2) %>%
merge(., taxonomy, by="taxon") %>%
mutate_at(vars(phylum, species), ~ str_replace(., "[dpcofgs]__", ""))%>%
dplyr::arrange(lfc_treatmentFMT2)
colors_alphabetic <- read_tsv("https://raw.githubusercontent.com/earthhologenome/EHI_taxonomy_colour/main/ehi_phylum_colors.tsv") %>%
mutate_at(vars(phylum), ~ str_replace(., "[dpcofgs]__", "")) %>%
right_join(taxonomy, by=join_by(phylum == phylum)) %>%
dplyr::select(phylum, colors) %>%
mutate(colors = str_c(colors, "80")) %>% #add 80% alpha
unique() %>%
dplyr::arrange(phylum)
tax_table <- as.data.frame(unique(ancombc_rand_table_mag$phylum))
colnames(tax_table)[1] <- "phylum"
tax_color <- merge(tax_table, colors_alphabetic, by="phylum")%>%
dplyr::arrange(phylum) %>%
dplyr::select(colors) %>%
pull()Differential abundance MAGs in each group
fmt2_count <- ancombc_rand_table_mag %>%
filter(lfc_treatmentFMT2<0) %>%
count(phylum, name = "FMT2") %>%
arrange(desc(FMT2))
ancombc_rand_table_mag %>%
filter(lfc_treatmentFMT2>0) %>%
count(phylum, name = "Inoculum") %>%
arrange(desc(Inoculum)) %>%
full_join(.,fmt2_count, by="phylum")%>%
mutate(across(where(is.numeric), ~ replace_na(., 0))) phylum Inoculum FMT2
1 Bacillota_A 12 3
2 Pseudomonadota 3 0
3 Bacteroidota 2 6
4 Cyanobacteriota 2 0
5 Desulfobacterota 2 1
6 Bacillota 1 2
7 Bacillota_B 1 0
8 Campylobacterota 1 1
9 Spirochaetota 0 1
ancombc_rand_table_mag %>%
filter(lfc_treatmentFMT2>0) %>%
count(phylum, name = "Inoculum") %>%
arrange(desc(Inoculum)) %>%
full_join(.,fmt2_count, by="phylum")%>%
mutate(across(where(is.numeric), ~ replace_na(., 0))) %>%
as.data.frame() %>%
summarise(across(where(is.numeric), ~ sum(.x, na.rm = TRUE))) Inoculum FMT2
1 24 14
ancombc_rand_table_mag%>%
mutate(genome=factor(taxon,levels=ancombc_rand_table_mag$taxon)) %>%
ggplot(., aes(x=lfc_treatmentFMT2, y=forcats::fct_reorder(genome,lfc_treatmentFMT2), fill=phylum)) +
geom_col() +
scale_fill_manual(values=tax_color) +
geom_hline(yintercept=0) +
theme(panel.background = element_blank(),
axis.line = element_line(size = 0.5, linetype = "solid", colour = "black"),
axis.text.x = element_text(size = 12),
axis.text.y = element_text(size = 8),
axis.title = element_text(size = 14, face = "bold"),
legend.text = element_text(size = 12),
legend.title = element_text(size = 14, face = "bold"),
legend.position = "right", legend.box = "vertical")+
xlab("log2FoldChange") +
ylab("Species")+
guides(fill=guide_legend(title="Phylum"))
MAGs enriched in donor on the left side and in FMT2 on the right side
15.3.4.3 Differences in the functional capacities
sample_sub <- sample_metadata %>%
filter(type == "Cold_intervention" & treatment %in% c("FMT2", "Inoculum"))
genome_counts_filtered <- genome_counts_filt %>%
select(one_of(c("genome",sample_sub$sample)))
GIFTs_elements <- to.elements(genome_gifts,GIFT_db)
GIFTs_elements_filtered <- GIFTs_elements[rownames(GIFTs_elements) %in% genome_counts_filtered$genome,]
GIFTs_elements_filtered <- as.data.frame(GIFTs_elements_filtered) %>%
select_if(~ !is.numeric(.) || sum(.) != 0)
GIFTs_functions <- to.functions(GIFTs_elements_filtered,GIFT_db)
GIFTs_domains <- to.domains(GIFTs_functions,GIFT_db)
genome_counts_filtered_row <- genome_counts_filtered %>%
mutate_at(vars(-genome),~./sum(.)) %>%
column_to_rownames(., "genome")
GIFTs_elements_community <- to.community(GIFTs_elements_filtered,genome_counts_filtered_row,GIFT_db)
GIFTs_functions_community <- to.community(GIFTs_functions,genome_counts_filtered_row,GIFT_db)
GIFTs_domains_community <- to.community(GIFTs_domains,genome_counts_filtered_row,GIFT_db)15.3.4.3.1 Community elements differences:
MCI
GIFTs_elements_community %>%
rowMeans() %>%
as_tibble(., rownames = "sample") %>%
left_join(sample_metadata, by = join_by(sample == sample)) %>%
group_by(treatment) %>%
summarise(MCI = mean(value), sd = sd(value))# A tibble: 2 × 3
treatment MCI sd
<chr> <dbl> <dbl>
1 FMT2 0.350 0.0293
2 Inoculum 0.351 0.0426
MCI <- GIFTs_elements_community %>%
rowMeans() %>%
as_tibble(., rownames = "sample") %>%
left_join(sample_metadata, by = join_by(sample == sample))
shapiro.test(MCI$value)
Shapiro-Wilk normality test
data: MCI$value
W = 0.94571, p-value = 0.259
Wilcoxon rank sum exact test
data: value by treatment
W = 63, p-value = 0.7938
alternative hypothesis: true location shift is not equal to 0
element_gift <- GIFTs_elements_community %>%
as.data.frame() %>%
rownames_to_column(., "sample") %>%
left_join(., sample_metadata[c(1,10)], by=join_by("sample"=="Tube_code"))uniqueGIFT_db<- unique(GIFT_db[c(2,4,5,6)]) %>% unite("Function",Function:Element, sep= "_", remove=FALSE)
significant_elements <- element_gift %>%
pivot_longer(-c(sample,treatment), names_to = "trait", values_to = "value") %>%
group_by(trait) %>%
summarise(p_value = wilcox.test(value ~ treatment)$p.value) %>%
mutate(p_adjust=p.adjust(p_value, method="BH")) %>%
filter(p_adjust < 0.05)%>%
rownames_to_column(., "Elements") %>%
left_join(.,uniqueGIFT_db[c(1,3)],by = join_by(trait == Code_element))
element_gift_t <- element_gift %>%
t() %>%
row_to_names(row_number = 1) %>%
as.data.frame() %>%
mutate_if(is.character, as.numeric) %>%
rownames_to_column(., "trait")
element_gift_filt <- subset(element_gift_t, trait %in% significant_elements$trait) %>%
t() %>%
row_to_names(row_number = 1) %>%
as.data.frame() %>%
mutate_if(is.character, as.numeric) %>%
rownames_to_column(., "sample")%>%
left_join(., sample_metadata[c(9,10)], by = join_by(sample == sample))
difference_table <- element_gift_filt %>%
select(-sample) %>%
group_by(treatment) %>%
summarise(across(everything(), mean)) %>%
t() %>%
row_to_names(row_number = 1) %>%
as.data.frame() %>%
mutate_if(is.character, as.numeric) %>%
rownames_to_column(., "Elements") %>%
left_join(.,uniqueGIFT_db[c(1,3,4)],by = join_by(Elements == Code_element)) %>%
arrange(Function) %>%
mutate(Difference=FMT2-Inoculum)%>%
mutate(group_color = ifelse(Difference <0, "Inoculum","FMT2")) 15.3.4.3.2 Community functions differences
MCI
GIFTs_functions_community %>%
rowMeans() %>%
as_tibble(., rownames = "sample") %>%
left_join(sample_metadata, by = join_by(sample == sample)) %>%
group_by(treatment) %>%
summarise(MCI = mean(value), sd = sd(value))# A tibble: 2 × 3
treatment MCI sd
<chr> <dbl> <dbl>
1 FMT2 0.346 0.0255
2 Inoculum 0.354 0.0374
MCI <- GIFTs_functions_community %>%
rowMeans() %>%
as_tibble(., rownames = "sample") %>%
left_join(sample_metadata, by = join_by(sample == sample))
shapiro.test(MCI$value)
Shapiro-Wilk normality test
data: MCI$value
W = 0.86712, p-value = 0.006921
Wilcoxon rank sum exact test
data: value by treatment
W = 61, p-value = 0.896
alternative hypothesis: true location shift is not equal to 0
function_gift <- GIFTs_functions_community %>%
as.data.frame() %>%
rownames_to_column(., "sample") %>%
merge(., sample_metadata[c(9,10)], by="sample")unique_funct_db<- GIFT_db[c(3,4,5)] %>%
distinct(Code_function, .keep_all = TRUE)
significant_functional <- function_gift %>%
pivot_longer(-c(sample,treatment), names_to = "trait", values_to = "value") %>%
group_by(trait) %>%
summarise(p_value = wilcox.test(value ~ treatment)$p.value) %>%
mutate(p_adjust=p.adjust(p_value, method="BH")) %>%
filter(p_adjust < 0.05)%>%
left_join(.,unique_funct_db[c(1,3)],by = join_by(trait == Code_function))
significant_functional# A tibble: 1 × 4
trait p_value p_adjust Function
<chr> <dbl> <dbl> <chr>
1 B04 0.00193 0.0387 SCFA biosynthesis
15.4 What is the trend of the microbiota in each type after FMT?
15.4.1 Alpha diversity
label_map <- c(
"Control" = "Cold-control",
"Treatment" = "Cold-intervention",
"Hot_control" = "Warm-control",
"richness" = "Species Richness",
"neutral" = "Neutral Diversity",
"phylogenetic" = "Phylogenetic Diversity"
)
alpha_div %>%
pivot_longer(-sample, names_to = "metric", values_to = "value") %>%
left_join(., sample_metadata, by = join_by(sample == Tube_code)) %>%
filter(time_point %in% c("FMT1","Acclimation", "FMT2")) %>%
mutate(metric = factor(metric, levels = c("richness", "neutral", "phylogenetic"))) %>%
ggplot(aes(y = value, x = time_point, color = type, fill = type)) +
geom_boxplot(outlier.shape = NA, show.legend = FALSE) +
geom_point(position = position_jitterdodge(jitter.width = 0.2, dodge.width = 0.8), alpha = 0.5, show.legend = FALSE) +
facet_grid(metric ~ type, scales = "free_y", labeller = labeller(metric = label_map, type = label_map))+
# facet_nested(.~metric+type, labeller = labeller(metric = label_map, type = label_map))+
scale_color_manual(name="Type",
breaks=c("Control", "Hot_control", "Treatment"),
labels=c("Cold-Cold", "Hot-Hot", "Cold-Hot"),
values=c("#4477AA","#d57d2c","#76b183")) +
scale_fill_manual(name="Type",
breaks=c("Control", "Hot_control", "Treatment"),
labels=c("Cold-Cold", "Hot-Hot", "Cold-Hot"),
values=c("#4477AA50","#d57d2c50","#76b18350")) +
theme_minimal() +
theme(axis.text.x=element_text(size=10))+
labs(x = "Time Point", y = "value")alpha_div_meta <- alpha_div %>%
left_join(sample_metadata, by = join_by(sample == Tube_code)) %>%
filter(time_point=="FMT1"|time_point=="Acclimation"|time_point=="FMT2") Richness
Modelq0GLMMNB <- glmer.nb(richness ~ type*time_point+(1|individual), data = alpha_div_meta)
summary(Modelq0GLMMNB)Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) ['glmerMod']
Family: Negative Binomial(5.7695) ( log )
Formula: richness ~ type * time_point + (1 | individual)
Data: alpha_div_meta
AIC BIC logLik deviance df.resid
757.7 783.7 -367.8 735.7 68
Scaled residuals:
Min 1Q Median 3Q Max
-2.01194 -0.49653 0.06196 0.55789 1.90953
Random effects:
Groups Name Variance Std.Dev.
individual (Intercept) 0.02586 0.1608
Number of obs: 79, groups: individual, 27
Fixed effects:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 3.9089 0.1696 23.046 <2e-16 ***
typeCold_intervention -0.1233 0.2297 -0.537 0.5915
typeWarm_control 0.5568 0.2283 2.439 0.0147 *
time_pointFMT1 -0.3140 0.2167 -1.449 0.1473
time_pointFMT2 0.1487 0.2173 0.684 0.4937
typeCold_intervention:time_pointFMT1 0.4309 0.3068 1.404 0.1602
typeWarm_control:time_pointFMT1 -0.1155 0.2983 -0.387 0.6986
typeCold_intervention:time_pointFMT2 0.4093 0.2990 1.369 0.1710
typeWarm_control:time_pointFMT2 -0.3876 0.2988 -1.297 0.1945
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Correlation of Fixed Effects:
(Intr) typCl_ typWr_ t_FMT1 t_FMT2 tC_:_FMT1 tW_:_FMT1 tC_:_FMT2
typCld_ntrv -0.721
typWrm_cntr -0.741 0.535
tim_pntFMT1 -0.677 0.497 0.503
tim_pntFMT2 -0.702 0.507 0.520 0.532
typC_:_FMT1 0.482 -0.664 -0.357 -0.707 -0.378
typW_:_FMT1 0.496 -0.362 -0.671 -0.727 -0.389 0.515
typC_:_FMT2 0.498 -0.686 -0.370 -0.384 -0.719 0.511 0.280
typW_:_FMT2 0.515 -0.370 -0.684 -0.388 -0.730 0.276 0.516 0.524
$emmeans
type emmean SE df asymp.LCL asymp.UCL
Cold_control 3.85 0.1050 Inf 3.65 4.06
Cold_intervention 4.01 0.1030 Inf 3.81 4.21
Warm_control 4.24 0.0996 Inf 4.05 4.44
Results are averaged over the levels of: time_point
Results are given on the log (not the response) scale.
Confidence level used: 0.95
$contrasts
contrast estimate SE df z.ratio p.value
Cold_control - Cold_intervention -0.157 0.145 Inf -1.083 0.5246
Cold_control - Warm_control -0.389 0.144 Inf -2.711 0.0184
Cold_intervention - Warm_control -0.232 0.143 Inf -1.627 0.2342
Results are averaged over the levels of: time_point
Results are given on the log (not the response) scale.
P value adjustment: tukey method for comparing a family of 3 estimates
$emmeans
time_point emmean SE df asymp.LCL asymp.UCL
Acclimation 4.05 0.0938 Inf 3.87 4.24
FMT1 3.84 0.0949 Inf 3.66 4.03
FMT2 4.21 0.0895 Inf 4.03 4.38
Results are averaged over the levels of: type
Results are given on the log (not the response) scale.
Confidence level used: 0.95
$contrasts
contrast estimate SE df z.ratio p.value
Acclimation - FMT1 0.209 0.123 Inf 1.700 0.2050
Acclimation - FMT2 -0.156 0.121 Inf -1.286 0.4028
FMT1 - FMT2 -0.365 0.122 Inf -2.997 0.0077
Results are averaged over the levels of: type
Results are given on the log (not the response) scale.
P value adjustment: tukey method for comparing a family of 3 estimates
Neutral
Modelq1n <- nlme::lme(neutral ~ type*time_point,
random = ~ 1 | individual,
data = alpha_div_meta)
summary(Modelq1n)Linear mixed-effects model fit by REML
Data: alpha_div_meta
AIC BIC logLik
563.2664 587.9998 -270.6332
Random effects:
Formula: ~1 | individual
(Intercept) Residual
StdDev: 4.551076 9.160157
Fixed effects: neutral ~ type * time_point
Value Std.Error DF t-value p-value
(Intercept) 21.343055 3.603126 46 5.923483 0.0000
typeCold_intervention -3.944072 4.960549 24 -0.795088 0.4344
typeWarm_control 23.258307 4.960549 24 4.688656 0.0001
time_pointFMT1 -3.983722 4.472618 46 -0.890691 0.3777
time_pointFMT2 2.374489 4.472618 46 0.530895 0.5980
typeCold_intervention:time_pointFMT1 11.253000 6.325237 46 1.779064 0.0818
typeWarm_control:time_pointFMT1 -14.877819 6.216964 46 -2.393101 0.0208
typeCold_intervention:time_pointFMT2 20.108022 6.216964 46 3.234380 0.0023
typeWarm_control:time_pointFMT2 -14.775497 6.216964 46 -2.376642 0.0217
Correlation:
(Intr) typCl_ typWr_ t_FMT1 t_FMT2 tC_:_FMT1 tW_:_FMT1 tC_:_FMT2
typeCold_intervention -0.726
typeWarm_control -0.726 0.528
time_pointFMT1 -0.663 0.481 0.481
time_pointFMT2 -0.663 0.481 0.481 0.534
typeCold_intervention:time_pointFMT1 0.469 -0.638 -0.340 -0.707 -0.378
typeWarm_control:time_pointFMT1 0.477 -0.346 -0.649 -0.719 -0.384 0.509
typeCold_intervention:time_pointFMT2 0.477 -0.649 -0.346 -0.384 -0.719 0.509 0.276
typeWarm_control:time_pointFMT2 0.477 -0.346 -0.649 -0.384 -0.719 0.272 0.518 0.518
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-2.1324340 -0.7088533 0.0456110 0.6569569 1.9681295
Number of Observations: 79
Number of Groups: 27
$emmeans
type emmean SE df lower.CL upper.CL
Cold_control 20.8 2.36 26 16.0 25.7
Cold_intervention 27.3 2.36 24 22.4 32.2
Warm_control 34.2 2.33 24 29.4 39.0
Results are averaged over the levels of: time_point
Degrees-of-freedom method: containment
Confidence level used: 0.95
$contrasts
contrast estimate SE df t.ratio p.value
Cold_control - Cold_intervention -6.51 3.33 24 -1.952 0.1461
Cold_control - Warm_control -13.37 3.31 24 -4.038 0.0013
Cold_intervention - Warm_control -6.86 3.31 24 -2.073 0.1170
Results are averaged over the levels of: time_point
Degrees-of-freedom method: containment
P value adjustment: tukey method for comparing a family of 3 estimates
$emmeans
time_point emmean SE df lower.CL upper.CL
Acclimation 27.8 2.01 24 23.6 31.9
FMT1 22.6 2.01 24 18.4 26.7
FMT2 31.9 1.97 24 27.9 36.0
Results are averaged over the levels of: type
Degrees-of-freedom method: containment
Confidence level used: 0.95
$contrasts
contrast estimate SE df t.ratio p.value
Acclimation - FMT1 5.19 2.55 46 2.034 0.1156
Acclimation - FMT2 -4.15 2.52 46 -1.646 0.2372
FMT1 - FMT2 -9.34 2.52 46 -3.703 0.0016
Results are averaged over the levels of: type
Degrees-of-freedom method: containment
P value adjustment: tukey method for comparing a family of 3 estimates
Phylogenetic
Model_phylo <- nlme::lme(phylogenetic ~ type*time_point,
random = ~ 1 | individual,
data = alpha_div_meta)
summary(Model_phylo)Linear mixed-effects model fit by REML
Data: alpha_div_meta
AIC BIC logLik
269.592 294.3254 -123.796
Random effects:
Formula: ~1 | individual
(Intercept) Residual
StdDev: 0.4979037 1.144231
Fixed effects: phylogenetic ~ type * time_point
Value Std.Error DF t-value p-value
(Intercept) 5.250918 0.4401145 46 11.930799 0.0000
typeCold_intervention 0.283251 0.6055741 24 0.467740 0.6442
typeWarm_control 1.264508 0.6055741 24 2.088114 0.0476
time_pointFMT1 -0.835721 0.5582377 46 -1.497070 0.1412
time_pointFMT2 -0.480730 0.5582377 46 -0.861157 0.3936
typeCold_intervention:time_pointFMT1 -0.545026 0.7894673 46 -0.690371 0.4934
typeWarm_control:time_pointFMT1 -1.408920 0.7762583 46 -1.815014 0.0760
typeCold_intervention:time_pointFMT2 0.056014 0.7762583 46 0.072159 0.9428
typeWarm_control:time_pointFMT2 -0.584302 0.7762583 46 -0.752716 0.4555
Correlation:
(Intr) typCl_ typWr_ t_FMT1 t_FMT2 tC_:_FMT1 tW_:_FMT1 tC_:_FMT2
typeCold_intervention -0.727
typeWarm_control -0.727 0.528
time_pointFMT1 -0.676 0.492 0.492
time_pointFMT2 -0.676 0.492 0.492 0.533
typeCold_intervention:time_pointFMT1 0.478 -0.652 -0.348 -0.707 -0.377
typeWarm_control:time_pointFMT1 0.486 -0.353 -0.663 -0.719 -0.383 0.509
typeCold_intervention:time_pointFMT2 0.486 -0.663 -0.353 -0.383 -0.719 0.509 0.276
typeWarm_control:time_pointFMT2 0.486 -0.353 -0.663 -0.383 -0.719 0.271 0.517 0.517
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-2.81770682 -0.52006818 -0.06472395 0.55839915 2.23601869
Number of Observations: 79
Number of Groups: 27
$emmeans
type emmean SE df lower.CL upper.CL
Cold_control 4.81 0.280 26 4.24 5.39
Cold_intervention 4.93 0.280 24 4.35 5.51
Warm_control 5.41 0.276 24 4.84 5.98
Results are averaged over the levels of: time_point
Degrees-of-freedom method: containment
Confidence level used: 0.95
$contrasts
contrast estimate SE df t.ratio p.value
Cold_control - Cold_intervention -0.12 0.396 24 -0.304 0.9505
Cold_control - Warm_control -0.60 0.393 24 -1.527 0.2963
Cold_intervention - Warm_control -0.48 0.393 24 -1.221 0.4525
Results are averaged over the levels of: time_point
Degrees-of-freedom method: containment
P value adjustment: tukey method for comparing a family of 3 estimates
$emmeans
time_point emmean SE df lower.CL upper.CL
Acclimation 5.77 0.245 24 5.26 6.27
FMT1 4.28 0.245 24 3.77 4.79
FMT2 5.11 0.240 24 4.61 5.61
Results are averaged over the levels of: type
Degrees-of-freedom method: containment
Confidence level used: 0.95
$contrasts
contrast estimate SE df t.ratio p.value
Acclimation - FMT1 1.487 0.319 46 4.666 0.0001
Acclimation - FMT2 0.657 0.315 46 2.085 0.1042
FMT1 - FMT2 -0.830 0.315 46 -2.635 0.0302
Results are averaged over the levels of: type
Degrees-of-freedom method: containment
P value adjustment: tukey method for comparing a family of 3 estimates
15.4.1.1 Beta diversity
Number of samples used
samples_to_keep_post7 <- sample_metadata %>%
filter(time_point=="FMT1"|time_point=="Acclimation"|time_point=="FMT2") %>%
select(Tube_code) %>%
pull()
subset_meta_post7 <- sample_metadata %>%
filter(time_point=="FMT1"|time_point=="Acclimation"|time_point=="FMT2")
subset_meta_post7$time_point<-as.factor(subset_meta_post7$time_point)
subset_meta_post7$type<-as.factor(subset_meta_post7$type)
length(samples_to_keep_post7)[1] 79
Richness
richness_post7 <- as.matrix(beta_q0n$S)
richness_post7 <- as.dist(richness_post7[rownames(richness_post7) %in% samples_to_keep_post7,
colnames(richness_post7) %in% samples_to_keep_post7])
betadisper(richness_post7, subset_meta_post7$type) %>% permutest(., pairwise = TRUE)
Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999
Response: Distances
Df Sum Sq Mean Sq F N.Perm Pr(>F)
Groups 2 0.06454 0.032268 4.9753 999 0.015 *
Residuals 76 0.49290 0.006485
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Pairwise comparisons:
(Observed p-value below diagonal, permuted p-value above diagonal)
Cold_control Cold_intervention Warm_control
Cold_control 0.6990000 0.017
Cold_intervention 0.6817089 0.006
Warm_control 0.0119513 0.0035106
adonis2(richness_post7 ~ type*time_point,
data = subset_meta_post7 %>% arrange(match(Tube_code,labels(richness_post7))),
permutations = 999,
strata = subset_meta_post7 %>% arrange(match(Tube_code,labels(richness_post7))) %>% pull(individual),
by="terms") %>%
broom::tidy() %>%
tt()| term | df | SumOfSqs | R2 | statistic | p.value |
|---|---|---|---|---|---|
| type | 2 | 3.120806 | 0.11961754 | 5.546155 | 0.001 |
| time_point | 2 | 1.703776 | 0.06530413 | 3.027874 | 0.001 |
| type:time_point | 4 | 1.570884 | 0.06021051 | 1.395852 | 0.001 |
| Residual | 70 | 19.694403 | 0.75486782 | NA | NA |
| Total | 78 | 26.089870 | 1.00000000 | NA | NA |
Neutral
neutral_post7 <- as.matrix(beta_q1n$S)
neutral_post7 <- as.dist(neutral_post7[rownames(neutral_post7) %in% samples_to_keep_post7,
colnames(neutral_post7) %in% samples_to_keep_post7])
betadisper(neutral_post7, subset_meta_post7$type) %>% permutest(., pairwise = TRUE)
Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999
Response: Distances
Df Sum Sq Mean Sq F N.Perm Pr(>F)
Groups 2 0.06738 0.033689 3.8309 999 0.021 *
Residuals 76 0.66833 0.008794
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Pairwise comparisons:
(Observed p-value below diagonal, permuted p-value above diagonal)
Cold_control Cold_intervention Warm_control
Cold_control 0.1430000 0.210
Cold_intervention 0.1611083 0.005
Warm_control 0.1985046 0.0069718
adonis2(neutral_post7 ~ type*time_point,
data = subset_meta_post7 %>% arrange(match(Tube_code,labels(neutral_post7))),
permutations = 999,
strata = subset_meta_post7 %>% arrange(match(Tube_code,labels(neutral_post7))) %>% pull(individual),
by="terms") %>%
broom::tidy() %>%
tt()| term | df | SumOfSqs | R2 | statistic | p.value |
|---|---|---|---|---|---|
| type | 2 | 3.705559 | 0.14953528 | 7.609355 | 0.001 |
| time_point | 2 | 2.217656 | 0.08949199 | 4.553951 | 0.001 |
| type:time_point | 4 | 1.813192 | 0.07317011 | 1.861693 | 0.001 |
| Residual | 70 | 17.044094 | 0.68780262 | NA | NA |
| Total | 78 | 24.780501 | 1.00000000 | NA | NA |
Phylogenetic
phylo_post7 <- as.matrix(beta_q1p$S)
phylo_post7 <- as.dist(phylo_post7[rownames(phylo_post7) %in% samples_to_keep_post7,
colnames(phylo_post7) %in% samples_to_keep_post7])
betadisper(phylo_post7, subset_meta_post7$type) %>% permutest(., pairwise = TRUE)
Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999
Response: Distances
Df Sum Sq Mean Sq F N.Perm Pr(>F)
Groups 2 0.05438 0.027192 2.1499 999 0.147
Residuals 76 0.96123 0.012648
Pairwise comparisons:
(Observed p-value below diagonal, permuted p-value above diagonal)
Cold_control Cold_intervention Warm_control
Cold_control 0.177000 0.722
Cold_intervention 0.155309 0.096
Warm_control 0.697512 0.083221
adonis2(phylo_post7 ~ type*time_point,
data = subset_meta_post7 %>% arrange(match(Tube_code,labels(phylo_post7))),
permutations = 999,
strata = subset_meta_post7 %>% arrange(match(Tube_code,labels(phylo_post7))) %>% pull(individual),
by="terms") %>%
broom::tidy() %>%
tt()| term | df | SumOfSqs | R2 | statistic | p.value |
|---|---|---|---|---|---|
| type | 2 | 0.2941494 | 0.07500331 | 3.592254 | 0.001 |
| time_point | 2 | 0.5528857 | 0.14097687 | 6.752032 | 0.001 |
| type:time_point | 4 | 0.2088312 | 0.05324856 | 1.275159 | 0.150 |
| Residual | 70 | 2.8659522 | 0.73077126 | NA | NA |
| Total | 78 | 3.9218184 | 1.00000000 | NA | NA |
dbRDA
#Richness
cca_ord <- capscale(formula = richness_post7 ~ subset_meta_post7$time_point* subset_meta_post7$type)
CAP_df <- as.data.frame(vegan::scores(cca_ord, display = "sites")) %>%
rownames_to_column('Tube_code') %>%
left_join(subset_meta_post7, by = 'Tube_code') %>%
column_to_rownames('Tube_code')%>%
mutate(x_cen = mean(CAP1, na.rm = TRUE)) %>%
mutate(y_cen = mean(CAP2, na.rm = TRUE))
biplot_scores <- as.data.frame(vegan::scores(cca_ord, display = "bp")) %>%
rownames_to_column("Variable")
biplot_scores$Variable <- recode(biplot_scores$Variable,
"subset_meta_post7$time_pointFMT1" = "FMT1",
"subset_meta_post7$time_pointFMT2"="FMT2",
"subset_meta_post7$typeHot_control"="Warm-control",
"subset_meta_post7$typeTreatment" = "Cold-intervention",
"subset_meta_post7$time_pointFMT1:subset_meta_post7$typeHot_control"="FMT1 Warm-control",
"subset_meta_post7$time_pointFMT2:subset_meta_post7$typeHot_control"="FMT2 Warm-control",
"subset_meta_post7$time_pointFMT1:subset_meta_post7$typeTreatment" = "FMT1 Cold-intervention",
"subset_meta_post7$time_pointFMT2:subset_meta_post7$typeTreatment" = "FMT2 Cold-intervention")
beta_richness_nmds_post7 <-CAP_df %>%
group_by(type, time_point) %>%
mutate(x_cen = mean(CAP1, na.rm = TRUE)) %>%
mutate(y_cen = mean(CAP2, na.rm = TRUE)) %>%
ungroup() %>%
ggplot(., aes(x=CAP1,y=CAP2, color=type,shape = time_point)) +
scale_color_manual(name="Type",
breaks=c("Control","Hot_control", "Treatment"),
labels=c("Cold-control","Warm-control", "Cold-intervention"),
values=c("#4477AA","#d57d2c", "#76b183")) +
scale_fill_manual(name="Type",
breaks=c("Control","Hot_control", "Treatment"),
labels=c("Cold-control","Warm-control", "Cold-intervention"),
values=c("#4477AA50","#d57d2c50","#76b18350")) +
scale_x_discrete(labels = c("Control" = "Cold-Cold", "Hot_control" = "Hot-Hot", "Treatment" = "Cold-Hot")) +
geom_point(size=2) +
geom_hline(yintercept = 0, linetype = "dotted") +
geom_vline(xintercept = 0, linetype = "dotted") +
geom_segment(aes(x=x_cen, y=y_cen, xend=CAP1, yend=CAP2), alpha=0.2) +
geom_segment(data = biplot_scores, aes(x = 0, y = 0, xend = CAP1, yend = CAP2),
inherit.aes = FALSE, arrow = arrow(length = unit(0.2, "cm")), color = "black") +
geom_text(data = biplot_scores, aes(x = CAP1, y = CAP2, label = Variable),
inherit.aes = FALSE, color = "black", vjust = -0.5, hjust = 0.5)+
theme_classic()
#Neutral
cca_ord <- capscale(formula = neutral_post7 ~ subset_meta_post7$time_point* subset_meta_post7$type)
CAP_df <- as.data.frame(vegan::scores(cca_ord, display = "sites")) %>%
rownames_to_column('Tube_code') %>%
left_join(subset_meta_post7, by = 'Tube_code') %>%
column_to_rownames('Tube_code')%>%
mutate(x_cen = mean(CAP1, na.rm = TRUE)) %>%
mutate(y_cen = mean(CAP2, na.rm = TRUE))
biplot_scores <- as.data.frame(vegan::scores(cca_ord, display = "bp")) %>%
rownames_to_column("Variable")
biplot_scores$Variable <- recode(biplot_scores$Variable,
"subset_meta_post7$time_pointFMT1" = "FMT1",
"subset_meta_post7$time_pointFMT2"="FMT2",
"subset_meta_post7$typeHot_control"="Warm-control",
"subset_meta_post7$typeTreatment" = "Cold-intervention",
"subset_meta_post7$time_pointFMT1:subset_meta_post7$typeHot_control"="FMT1 Warm-control",
"subset_meta_post7$time_pointFMT2:subset_meta_post7$typeHot_control"="FMT2 Warm-control",
"subset_meta_post7$time_pointFMT1:subset_meta_post7$typeTreatment" = "FMT1 Cold-intervention",
"subset_meta_post7$time_pointFMT2:subset_meta_post7$typeTreatment" = "FMT2 Cold-intervention")
beta_neutral_nmds_post7 <- CAP_df %>%
group_by(type, time_point) %>%
mutate(x_cen = mean(CAP1, na.rm = TRUE)) %>%
mutate(y_cen = mean(CAP2, na.rm = TRUE)) %>%
ungroup() %>%
ggplot(., aes(x=CAP1,y=CAP2, color=type,shape = time_point)) +
scale_color_manual(name="Type",
breaks=c("Control","Hot_control", "Treatment"),
labels=c("Cold-control","Warm-control", "Cold-intervention"),
values=c("#4477AA","#d57d2c", "#76b183")) +
scale_fill_manual(name="Type",
breaks=c("Control","Hot_control", "Treatment"),
labels=c("Cold-control","Warm-control", "Cold-intervention"),
values=c("#4477AA50","#d57d2c50","#76b18350")) +
scale_x_discrete(labels = c("Control" = "Cold-Cold", "Hot_control" = "Hot-Hot", "Treatment" = "Cold-Hot")) +
geom_point(size=2) +
geom_hline(yintercept = 0, linetype = "dotted") +
geom_vline(xintercept = 0, linetype = "dotted") +
geom_segment(aes(x=x_cen, y=y_cen, xend=CAP1, yend=CAP2), alpha=0.2) +
geom_segment(data = biplot_scores, aes(x = 0, y = 0, xend = CAP1, yend = CAP2),
inherit.aes = FALSE, arrow = arrow(length = unit(0.2, "cm")), color = "black") +
geom_text(data = biplot_scores, aes(x = CAP1, y = CAP2, label = Variable),
inherit.aes = FALSE, color = "black", vjust = -0.5, hjust = 0.5)+
theme_classic()
#Phylogenetic
cca_ord <- capscale(formula = phylo_post7 ~ subset_meta_post7$time_point* subset_meta_post7$type)
CAP_df <- as.data.frame(vegan::scores(cca_ord, display = "sites")) %>%
rownames_to_column('Tube_code') %>%
left_join(subset_meta_post7, by = 'Tube_code') %>%
column_to_rownames('Tube_code')%>%
mutate(x_cen = mean(CAP1, na.rm = TRUE)) %>%
mutate(y_cen = mean(CAP2, na.rm = TRUE))
biplot_scores <- as.data.frame(vegan::scores(cca_ord, display = "bp")) %>%
rownames_to_column("Variable")
biplot_scores$Variable <- recode(biplot_scores$Variable,
"subset_meta_post7$time_pointFMT1" = "FMT1",
"subset_meta_post7$time_pointFMT2"="FMT2",
"subset_meta_post7$typeHot_control"="Warm-control",
"subset_meta_post7$typeTreatment" = "Cold-intervention",
"subset_meta_post7$time_pointFMT1:subset_meta_post7$typeHot_control"="FMT1 Warm-control",
"subset_meta_post7$time_pointFMT2:subset_meta_post7$typeHot_control"="FMT2 Warm-control",
"subset_meta_post7$time_pointFMT1:subset_meta_post7$typeTreatment" = "FMT1 Cold-intervention",
"subset_meta_post7$time_pointFMT2:subset_meta_post7$typeTreatment" = "FMT2 Cold-intervention")
beta_phylogenetic_nmds_post7 <- CAP_df %>%
group_by(type, time_point) %>%
mutate(x_cen = mean(CAP1, na.rm = TRUE)) %>%
mutate(y_cen = mean(CAP2, na.rm = TRUE)) %>%
ungroup() %>%
ggplot(., aes(x=CAP1,y=CAP2, color=type,shape = time_point)) +
scale_color_manual(name="Type",
breaks=c("Control","Hot_control", "Treatment"),
labels=c("Cold-control","Warm-control", "Cold-intervention"),
values=c("#4477AA","#d57d2c", "#76b183")) +
scale_fill_manual(name="Type",
breaks=c("Control","Hot_control", "Treatment"),
labels=c("Cold-control","Warm-control", "Cold-intervention"),
values=c("#4477AA50","#d57d2c50","#76b18350")) +
scale_x_discrete(labels = c("Control" = "Cold-Cold", "Hot_control" = "Hot-Hot", "Treatment" = "Cold-Hot")) +
geom_point(size=2) +
geom_hline(yintercept = 0, linetype = "dotted") +
geom_vline(xintercept = 0, linetype = "dotted") +
geom_segment(aes(x=x_cen, y=y_cen, xend=CAP1, yend=CAP2), alpha=0.2) +
geom_segment(data = biplot_scores, aes(x = 0, y = 0, xend = CAP1, yend = CAP2),
inherit.aes = FALSE, arrow = arrow(length = unit(0.2, "cm")), color = "black") +
geom_text(data = biplot_scores, aes(x = CAP1, y = CAP2, label = Variable),
inherit.aes = FALSE, color = "black", vjust = -0.5, hjust = 0.5)+
theme_classic()ggarrange(beta_richness_nmds_post7, beta_neutral_nmds_post7, beta_phylogenetic_nmds_post7, ncol=3, nrow=1, common.legend = TRUE, legend="right")15.5 Differences between acclimation and FMT1 across the three experimental groups
15.5.1 Beta diversity
CI from acclimation to FMT1
samples_to_keep <- sample_metadata %>%
filter(time_point %in% c("FMT1","Acclimation") & type == "Cold_intervention") %>%
select(Tube_code) %>%
pull()
subset_meta <- sample_metadata %>%
filter(time_point %in% c("FMT1","Acclimation") & type == "Cold_intervention")
length(samples_to_keep)[1] 17
richness <- as.matrix(beta_q0n$S)
richness <- as.dist(richness[rownames(richness) %in% samples_to_keep,
colnames(richness) %in% samples_to_keep])
betadisper(richness, subset_meta$time_point) %>% permutest(., pairwise = TRUE)
Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999
Response: Distances
Df Sum Sq Mean Sq F N.Perm Pr(>F)
Groups 1 0.001206 0.0012057 0.125 999 0.714
Residuals 15 0.144707 0.0096471
Pairwise comparisons:
(Observed p-value below diagonal, permuted p-value above diagonal)
Acclimation FMT1
Acclimation 0.722
FMT1 0.72862
adonis2(richness ~ time_point,
data = subset_meta %>% arrange(match(Tube_code,labels(richness))),
permutations = 999,
strata = subset_meta %>% arrange(match(Tube_code,labels(richness))) %>% pull(individual),
by="terms") %>%
broom::tidy() %>%
tt()| term | df | SumOfSqs | R2 | statistic | p.value |
|---|---|---|---|---|---|
| time_point | 1 | 0.9551308 | 0.1632291 | 2.926054 | 0.00390625 |
| Residual | 15 | 4.8963429 | 0.8367709 | NA | NA |
| Total | 16 | 5.8514737 | 1.0000000 | NA | NA |
neutral <- as.matrix(beta_q1n$S)
neutral <- as.dist(neutral[rownames(neutral) %in% samples_to_keep,
colnames(neutral) %in% samples_to_keep])
betadisper(neutral, subset_meta$time_point) %>% permutest(., pairwise = TRUE)
Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999
Response: Distances
Df Sum Sq Mean Sq F N.Perm Pr(>F)
Groups 1 0.004394 0.004394 0.2999 999 0.606
Residuals 15 0.219796 0.014653
Pairwise comparisons:
(Observed p-value below diagonal, permuted p-value above diagonal)
Acclimation FMT1
Acclimation 0.608
FMT1 0.59202
adonis2(neutral ~ time_point,
data = subset_meta %>% arrange(match(Tube_code,labels(neutral))),
strata = subset_meta %>% arrange(match(Tube_code,labels(neutral))) %>% pull(individual),
by="terms") %>%
broom::tidy() %>%
tt()| term | df | SumOfSqs | R2 | statistic | p.value |
|---|---|---|---|---|---|
| time_point | 1 | 1.312777 | 0.2358567 | 4.629826 | 0.00390625 |
| Residual | 15 | 4.253219 | 0.7641433 | NA | NA |
| Total | 16 | 5.565996 | 1.0000000 | NA | NA |
phylo <- as.matrix(beta_q1p$S)
phylo <- as.dist(phylo[rownames(phylo) %in% samples_to_keep,
colnames(phylo) %in% samples_to_keep])
betadisper(phylo, subset_meta$time_point) %>% permutest(., pairwise = TRUE)
Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999
Response: Distances
Df Sum Sq Mean Sq F N.Perm Pr(>F)
Groups 1 0.02219 0.022191 0.8144 999 0.371
Residuals 15 0.40871 0.027247
Pairwise comparisons:
(Observed p-value below diagonal, permuted p-value above diagonal)
Acclimation FMT1
Acclimation 0.358
FMT1 0.38108
adonis2(phylo ~ time_point,
data = subset_meta %>% arrange(match(Tube_code,labels(phylo))),
permutations = 999,
strata = subset_meta %>% arrange(match(Tube_code,labels(phylo))) %>% pull(individual),
by="terms") %>%
tt()| Df | SumOfSqs | R2 | F | Pr(>F) |
|---|---|---|---|---|
| 1 | 0.2531943 | 0.1791546 | 3.273842 | 0.03125 |
| 15 | 1.1600785 | 0.8208454 | NA | NA |
| 16 | 1.4132728 | 1.0000000 | NA | NA |
CC from acclimation to FMT1
samples_to_keep <- sample_metadata %>%
filter(time_point %in% c("FMT1","Acclimation") & type == "Cold_control") %>%
select(Tube_code) %>%
pull()
subset_meta <- sample_metadata %>%
filter(time_point %in% c("FMT1","Acclimation") & type == "Cold_control")
length(samples_to_keep)[1] 17
richness <- as.matrix(beta_q0n$S)
richness <- as.dist(richness[rownames(richness) %in% samples_to_keep,
colnames(richness) %in% samples_to_keep])
betadisper(richness, subset_meta$time_point) %>% permutest(., pairwise = TRUE)
Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999
Response: Distances
Df Sum Sq Mean Sq F N.Perm Pr(>F)
Groups 1 0.002321 0.0023205 0.2591 999 0.649
Residuals 15 0.134317 0.0089544
Pairwise comparisons:
(Observed p-value below diagonal, permuted p-value above diagonal)
Acclimation FMT1
Acclimation 0.645
FMT1 0.61811
adonis2(richness ~ time_point,
data = subset_meta %>% arrange(match(Tube_code,labels(richness))),
permutations = 999,
strata = subset_meta %>% arrange(match(Tube_code,labels(richness))) %>% pull(individual),
by="terms") %>%
broom::tidy() %>%
tt()| term | df | SumOfSqs | R2 | statistic | p.value |
|---|---|---|---|---|---|
| time_point | 1 | 0.6804988 | 0.1228384 | 2.100611 | 0.00390625 |
| Residual | 15 | 4.8592912 | 0.8771616 | NA | NA |
| Total | 16 | 5.5397900 | 1.0000000 | NA | NA |
neutral <- as.matrix(beta_q1n$S)
neutral <- as.dist(neutral[rownames(neutral) %in% samples_to_keep,
colnames(neutral) %in% samples_to_keep])
betadisper(neutral, subset_meta$time_point) %>% permutest(., pairwise = TRUE)
Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999
Response: Distances
Df Sum Sq Mean Sq F N.Perm Pr(>F)
Groups 1 0.002521 0.0025206 0.1629 999 0.722
Residuals 15 0.232162 0.0154775
Pairwise comparisons:
(Observed p-value below diagonal, permuted p-value above diagonal)
Acclimation FMT1
Acclimation 0.723
FMT1 0.69223
adonis2(neutral ~ time_point,
data = subset_meta %>% arrange(match(Tube_code,labels(neutral))),
strata = subset_meta %>% arrange(match(Tube_code,labels(neutral))) %>% pull(individual),
by="terms") %>%
broom::tidy() %>%
tt()| term | df | SumOfSqs | R2 | statistic | p.value |
|---|---|---|---|---|---|
| time_point | 1 | 0.8153894 | 0.1711361 | 3.09706 | 0.00390625 |
| Residual | 15 | 3.9491774 | 0.8288639 | NA | NA |
| Total | 16 | 4.7645668 | 1.0000000 | NA | NA |
phylo <- as.matrix(beta_q1p$S)
phylo <- as.dist(phylo[rownames(phylo) %in% samples_to_keep,
colnames(phylo) %in% samples_to_keep])
betadisper(phylo, subset_meta$time_point) %>% permutest(., pairwise = TRUE)
Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999
Response: Distances
Df Sum Sq Mean Sq F N.Perm Pr(>F)
Groups 1 0.002284 0.0022841 0.2022 999 0.627
Residuals 15 0.169443 0.0112962
Pairwise comparisons:
(Observed p-value below diagonal, permuted p-value above diagonal)
Acclimation FMT1
Acclimation 0.64
FMT1 0.65938
adonis2(phylo ~ time_point,
data = subset_meta %>% arrange(match(Tube_code,labels(phylo))),
permutations = 999,
strata = subset_meta %>% arrange(match(Tube_code,labels(phylo))) %>% pull(individual),
by="terms") %>%
tt()| Df | SumOfSqs | R2 | F | Pr(>F) |
|---|---|---|---|---|
| 1 | 0.1176029 | 0.1666113 | 2.998803 | 0.015625 |
| 15 | 0.5882490 | 0.8333887 | NA | NA |
| 16 | 0.7058519 | 1.0000000 | NA | NA |
WC from acclimation to FMT1
samples_to_keep <- sample_metadata %>%
filter(time_point %in% c("FMT1","Acclimation") & type == "Warm_control") %>%
select(Tube_code) %>%
pull()
subset_meta <- sample_metadata %>%
filter(time_point %in% c("FMT1","Acclimation") & type == "Warm_control")
length(samples_to_keep)[1] 18
richness <- as.matrix(beta_q0n$S)
richness <- as.dist(richness[rownames(richness) %in% samples_to_keep,
colnames(richness) %in% samples_to_keep])
betadisper(richness, subset_meta$time_point) %>% permutest(., pairwise = TRUE)
Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999
Response: Distances
Df Sum Sq Mean Sq F N.Perm Pr(>F)
Groups 1 0.022023 0.0220227 14.458 999 0.002 **
Residuals 16 0.024371 0.0015232
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Pairwise comparisons:
(Observed p-value below diagonal, permuted p-value above diagonal)
Acclimation FMT1
Acclimation 0.003
FMT1 0.0015647
adonis2(richness ~ time_point,
data = subset_meta %>% arrange(match(Tube_code,labels(richness))),
permutations = 999,
strata = subset_meta %>% arrange(match(Tube_code,labels(richness))) %>% pull(individual),
by="terms") %>%
broom::tidy() %>%
tt()| term | df | SumOfSqs | R2 | statistic | p.value |
|---|---|---|---|---|---|
| time_point | 1 | 0.5796135 | 0.132397 | 2.441615 | 0.00390625 |
| Residual | 16 | 3.7982306 | 0.867603 | NA | NA |
| Total | 17 | 4.3778441 | 1.000000 | NA | NA |
neutral <- as.matrix(beta_q1n$S)
neutral <- as.dist(neutral[rownames(neutral) %in% samples_to_keep,
colnames(neutral) %in% samples_to_keep])
betadisper(neutral, subset_meta$time_point) %>% permutest(., pairwise = TRUE)
Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999
Response: Distances
Df Sum Sq Mean Sq F N.Perm Pr(>F)
Groups 1 0.014589 0.0145888 2.6594 999 0.114
Residuals 16 0.087771 0.0054857
Pairwise comparisons:
(Observed p-value below diagonal, permuted p-value above diagonal)
Acclimation FMT1
Acclimation 0.112
FMT1 0.12246
adonis2(neutral ~ time_point,
data = subset_meta %>% arrange(match(Tube_code,labels(neutral))),
strata = subset_meta %>% arrange(match(Tube_code,labels(neutral))) %>% pull(individual),
by="terms") %>%
broom::tidy() %>%
tt()| term | df | SumOfSqs | R2 | statistic | p.value |
|---|---|---|---|---|---|
| time_point | 1 | 0.6954835 | 0.1707749 | 3.295123 | 0.00390625 |
| Residual | 16 | 3.3770315 | 0.8292251 | NA | NA |
| Total | 17 | 4.0725150 | 1.0000000 | NA | NA |
phylo <- as.matrix(beta_q1p$S)
phylo <- as.dist(phylo[rownames(phylo) %in% samples_to_keep,
colnames(phylo) %in% samples_to_keep])
betadisper(phylo, subset_meta$time_point) %>% permutest(., pairwise = TRUE)
Permutation test for homogeneity of multivariate dispersions
Permutation: free
Number of permutations: 999
Response: Distances
Df Sum Sq Mean Sq F N.Perm Pr(>F)
Groups 1 0.001463 0.0014625 0.1701 999 0.832
Residuals 16 0.137566 0.0085979
Pairwise comparisons:
(Observed p-value below diagonal, permuted p-value above diagonal)
Acclimation FMT1
Acclimation 0.856
FMT1 0.68549
adonis2(phylo ~ time_point,
data = subset_meta %>% arrange(match(Tube_code,labels(phylo))),
permutations = 999,
strata = subset_meta %>% arrange(match(Tube_code,labels(phylo))) %>% pull(individual),
by="terms") %>%
tt()| Df | SumOfSqs | R2 | F | Pr(>F) |
|---|---|---|---|---|
| 1 | 0.0925260 | 0.1571182 | 2.982496 | 0.01953125 |
| 16 | 0.4963682 | 0.8428818 | NA | NA |
| 17 | 0.5888942 | 1.0000000 | NA | NA |
15.5.2 Functional differences
CI from acclimation to FMT1
significant_element<-element_gift %>%
filter(time_point %in% c("FMT1","Acclimation") & type == "Cold_intervention") %>%
select(-time_point, -type) %>%
filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
select(Tube_code, where( ~ is.numeric(.) && sum(.) > 0)) %>%
left_join(sample_metadata[c(1, 8)], by = "Tube_code") %>%
pivot_longer(-c(Tube_code, time_point),
names_to = "trait",
values_to = "value") %>%
group_by(trait) %>%
summarise(p_value = wilcox.test(value ~ time_point)$p.value) %>%
mutate(p_adjust = p.adjust(p_value, method = "BH")) %>%
filter(p_adjust < 0.05) %>%
remove_rownames() %>%
left_join(., uniqueGIFT_db, by=join_by("trait"=="Code_element"))element_gift_sig <- element_gift %>%
select(Tube_code, all_of(intersect(
significant_element$trait,
colnames(element_gift)
))) %>%
left_join(., sample_metadata[c(1, 6, 8 )], by = join_by(Tube_code == Tube_code)) %>%
filter(time_point %in% c("FMT1","Acclimation"))%>%
filter(type=="Cold_intervention")
difference_table <- element_gift_sig %>%
select(-Tube_code, -type) %>%
group_by(time_point) %>%
summarise(across(everything(), mean)) %>%
t() %>%
row_to_names(row_number = 1) %>%
as.data.frame() %>%
mutate_if(is.character, as.numeric) %>%
rownames_to_column(., "Elements") %>%
left_join(.,uniqueGIFT_db[c(1,3,4)],by = join_by(Elements == Code_element)) %>%
arrange(Function) %>%
mutate(Difference=Acclimation-FMT1)%>%
mutate(group_color = ifelse(Difference <0,"FMT1", "Acclimation")) difference_table %>%
ggplot(aes(x=forcats::fct_reorder(Function,Difference), y=Difference, fill=group_color)) +
geom_col() +
scale_fill_manual(values=c("#76b183",'#008080')) +
geom_hline(yintercept=0) +
coord_flip()+
theme(axis.text = element_text(size = 10),
axis.title = element_text(size = 12),
legend.position = "right",
legend.title = element_blank(),
panel.background = element_blank(),
panel.grid.major = element_line(size = 0.15, linetype = 'solid',
colour = "grey"))+
xlab("Function") +
ylab("Mean difference")CC from acclimation to FMT1
significant_element<-element_gift %>%
filter(time_point %in% c("FMT1","Acclimation") & type == "Cold_control") %>%
select(-time_point, -type) %>%
filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
select(Tube_code, where( ~ is.numeric(.) && sum(.) > 0)) %>%
left_join(sample_metadata[c(1, 8)], by = "Tube_code") %>%
pivot_longer(-c(Tube_code, time_point),
names_to = "trait",
values_to = "value") %>%
group_by(trait) %>%
summarise(p_value = wilcox.test(value ~ time_point)$p.value) %>%
mutate(p_adjust = p.adjust(p_value, method = "BH")) %>%
filter(p_adjust < 0.05) %>%
remove_rownames() %>%
left_join(., uniqueGIFT_db, by=join_by("trait"=="Code_element"))element_gift_sig <- element_gift %>%
select(Tube_code, all_of(intersect(
significant_element$trait,
colnames(element_gift)
))) %>%
left_join(., sample_metadata[c(1, 6, 8)], by = join_by(Tube_code == Tube_code)) %>%
filter(time_point %in% c("FMT1","Acclimation"))%>%
filter(type=="Cold_control")
difference_table <- element_gift_sig %>%
select(-Tube_code, -type) %>%
group_by(time_point) %>%
summarise(across(everything(), mean)) %>%
t() %>%
row_to_names(row_number = 1) %>%
as.data.frame() %>%
mutate_if(is.character, as.numeric) %>%
rownames_to_column(., "Elements") %>%
left_join(.,uniqueGIFT_db[c(1,3,4)],by = join_by(Elements == Code_element)) %>%
arrange(Function) %>%
mutate(Difference=Acclimation-FMT1)%>%
mutate(group_color = ifelse(Difference <0,"FMT1", "Acclimation")) difference_table %>%
ggplot(aes(x=forcats::fct_reorder(Function,Difference), y=Difference, fill=group_color)) +
geom_col() +
scale_fill_manual(values=c("#4477AA",'#008080')) +
geom_hline(yintercept=0) +
coord_flip()+
theme(axis.text = element_text(size = 10),
axis.title = element_text(size = 12),
legend.position = "right",
legend.title = element_blank(),
panel.background = element_blank(),
panel.grid.major = element_line(size = 0.15, linetype = 'solid',
colour = "grey"))+
xlab("Function") +
ylab("Mean difference")WC from acclimation to FMT1
element_gift %>%
filter(time_point %in% c("FMT1","Acclimation") & type == "Warm_control") %>%
select(-time_point, -type) %>%
filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
select(Tube_code, where( ~ is.numeric(.) && sum(.) > 0)) %>%
left_join(sample_metadata[c(1, 8)], by = "Tube_code") %>%
pivot_longer(-c(Tube_code, time_point),
names_to = "trait",
values_to = "value") %>%
group_by(trait) %>%
summarise(p_value = wilcox.test(value ~ time_point)$p.value) %>%
mutate(p_adjust = p.adjust(p_value, method = "BH")) %>%
filter(p_adjust < 0.05) %>%
remove_rownames() %>%
left_join(., uniqueGIFT_db, by=join_by("trait"=="Code_element"))# A tibble: 0 × 6
# ℹ 6 variables: trait <chr>, p_value <dbl>, p_adjust <dbl>, Domain <chr>, Function <chr>, Element <chr>
15.5.3 Differential abundances
15.5.3.1 CI: acclimation vs FMT1
Structural zeros
struc <- structural_zeros %>%
filter(present=="Acclimation")%>%
count(phylum, name = "Acclimation") %>%
arrange(desc(Acclimation))
structural_zeros %>%
filter(present=="FMT1")%>%
count(phylum, name = "FMT1") %>%
arrange(desc(FMT1)) %>%
full_join(., struc, by="phylum") %>%
mutate(across(everything(), ~ ifelse(is.na(.), 0, .))) %>%
tt()| phylum | FMT1 | Acclimation |
|---|---|---|
| p__Bacteroidota | 33 | 11 |
| p__Bacillota_A | 25 | 16 |
| p__Pseudomonadota | 5 | 8 |
| p__Desulfobacterota | 4 | 2 |
| p__Bacillota | 3 | 9 |
| p__Campylobacterota | 2 | 0 |
| p__Cyanobacteriota | 2 | 2 |
| p__Bacillota_C | 1 | 1 |
| p__Elusimicrobiota | 1 | 0 |
| p__Verrucomicrobiota | 0 | 2 |
| p__Actinomycetota | 0 | 1 |
| p__Bacillota_B | 0 | 1 |
phylo_samples <- sample_metadata %>%
filter(type == "Cold_intervention" & time_point %in% c("Acclimation", "FMT1") )%>%
column_to_rownames("Tube_code") %>%
sample_data()
phylo_genome <- genome_counts_filt %>%
filter(!genome %in% structural_zeros$genome) %>%
select(one_of(c("genome",rownames(phylo_samples)))) %>%
filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
select(genome, where(~ is.numeric(.) && sum(.) > 0)) %>%
column_to_rownames("genome") %>%
otu_table(., taxa_are_rows = TRUE)
phylo_taxonomy <- genome_metadata %>%
filter(genome %in% rownames(phylo_genome)) %>%
column_to_rownames("genome") %>%
dplyr::select(domain,phylum,class,order,family,genus,species) %>%
as.matrix() %>%
tax_table()
physeq_genome_filtered <- phyloseq(phylo_genome, phylo_taxonomy, phylo_samples)ancom_rand_output_ci_accli_fmt1 = ancombc2(data = physeq_genome_filtered,
assay_name = "counts",
tax_level = NULL,
fix_formula = "time_point",
p_adj_method = "holm",
pseudo_sens = TRUE,
prv_cut =0,
lib_cut = 0,
s0_perc = 0.05,
group = NULL,
struc_zero = FALSE,
neg_lb = FALSE,
alpha = 0.05,
n_cl = 2,
verbose = TRUE,
global = FALSE,
pairwise = FALSE,
dunnet = FALSE,
trend = FALSE,
iter_control = list(tol = 1e-5, max_iter = 20, verbose = FALSE),
em_control = list(tol = 1e-5, max_iter = 100),
mdfdr_control = list(fwer_ctrl_method = "holm", B = 100),
trend_control = NULL)ancom_rand_output_ci_accli_fmt1$res %>%
dplyr::select(taxon, lfc_time_pointFMT1, p_time_pointFMT1) %>%
filter(p_time_pointFMT1 < 0.05) %>%
left_join(., genome_metadata, by=join_by("taxon"=="genome")) %>%
select(2,3,7,8,9) %>%
tt() | lfc_time_pointFMT1 | p_time_pointFMT1 | order | family | genus |
|---|---|---|---|---|
| -1.8462367 | 0.0286090261 | o__Bacteroidales | f__Rikenellaceae | g__Alistipes |
| -1.0602262 | 0.0256488405 | o__Campylobacterales | f__Helicobacteraceae | g__Helicobacter_J |
| -2.1031126 | 0.0039988943 | o__Mycoplasmatales | f__Mycoplasmoidaceae | g__Mycoplasmoides |
| -1.1937360 | 0.0258952249 | o__Lachnospirales | f__Lachnospiraceae | g__Hungatella_A |
| 1.1869122 | 0.0246642650 | o__Oscillospirales | f__Ruminococcaceae | g__Negativibacillus |
| -3.0923830 | 0.0007999100 | o__Erysipelotrichales | f__Coprobacillaceae | g__Coprobacillus |
| -1.2524541 | 0.0482834029 | o__Opitutales | f__LL51 | g__ |
| -1.2157647 | 0.0209074696 | o__Bacteroidales | f__Bacteroidaceae | g__Bacteroides |
| -2.1668443 | 0.0092167448 | o__Gastranaerophilales | f__Gastranaerophilaceae | g__Scatousia |
| 1.8856206 | 0.0022558153 | o__Lachnospirales | f__Lachnospiraceae | g__ |
| -1.2811877 | 0.0290779856 | o__Bacteroidales | f__Marinifilaceae | g__Odoribacter |
| -0.9960276 | 0.0294171519 | o__Selenomonadales | f__ | g__ |
| -1.9064058 | 0.0121488844 | o__Lachnospirales | f__Lachnospiraceae | g__CAG-95 |
| -2.0548675 | 0.0169404933 | o__Christensenellales | f__ | g__ |
| -1.8189515 | 0.0001244128 | o__Bacteroidales | f__Marinifilaceae | g__Odoribacter |
| 1.0549620 | 0.0254528501 | o__Erysipelotrichales | f__Erysipelotrichaceae | g__Clostridium_AQ |
| -1.4937622 | 0.0113515485 | o__Bacteroidales | f__Tannerellaceae | g__Parabacteroides_B |
| 1.9263692 | 0.0019001955 | o__Bacteroidales | f__Tannerellaceae | g__Parabacteroides |
taxonomy <- data.frame(physeq_genome_filtered@tax_table) %>%
rownames_to_column(., "taxon") %>%
mutate_at(vars(order, phylum, family, genus, species), ~ str_replace(., "[dpcofgs]__", ""))
ancombc_rand_table_mag <- ancom_rand_output_ci_accli_fmt1$res %>%
dplyr::select(taxon, lfc_time_pointFMT1, p_time_pointFMT1) %>%
#filter(p_time_pointFMT1 < 0.05) %>%
dplyr::arrange(p_time_pointFMT1) %>%
merge(., taxonomy, by="taxon") %>%
mutate_at(vars(phylum, species), ~ str_replace(., "[dpcofgs]__", ""))%>%
dplyr::arrange(lfc_time_pointFMT1)
ancombc_rand_table_mag taxon lfc_time_pointFMT1 p_time_pointFMT1 domain phylum class order family
1 AH1_2nd_18:bin_000011 -3.092382977 0.0007999100 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Coprobacillaceae
2 AH1_2nd_2:bin_000003 -2.648161454 1.0000000000 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
3 AH1_2nd_1:bin_000003 -2.166844294 0.0092167448 d__Bacteria Cyanobacteriota c__Vampirovibrionia Gastranaerophilales Gastranaerophilaceae
4 AH1_2nd_12:bin_000041 -2.103112630 0.0039988943 d__Bacteria Bacillota c__Bacilli Mycoplasmatales Mycoplasmoidaceae
5 LI1_2nd_4:bin_000001 -2.054867498 0.0169404933 d__Bacteria Bacillota_A c__Clostridia Christensenellales
6 AH1_2nd_8:bin_000006 -1.906405809 0.0121488844 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
7 AH1_2nd_10:bin_000041 -1.846236702 0.0286090261 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
8 LI1_2nd_4:bin_000026 -1.818951547 0.0001244128 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Marinifilaceae
9 AH1_2nd_10:bin_000040 -1.684889357 1.0000000000 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Ruminococcaceae
10 AH1_2nd_19:bin_000011 -1.494726874 0.0611399521 d__Bacteria Desulfobacterota c__Desulfovibrionia Desulfovibrionales Desulfovibrionaceae
11 LI1_2nd_7:bin_000042 -1.493762171 0.0113515485 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
12 AH1_2nd_19:bin_000072 -1.478268874 1.0000000000 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
13 AH1_2nd_14:bin_000015 -1.316753957 0.1424337358 d__Bacteria Bacillota_A c__Clostridia Christensenellales UBA3700
14 AH1_2nd_1:bin_000039 -1.281187716 0.0290779856 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Marinifilaceae
15 AH1_2nd_19:bin_000052 -1.252454135 0.0482834029 d__Bacteria Verrucomicrobiota c__Verrucomicrobiae Opitutales LL51
16 AH1_2nd_19:bin_000067 -1.215764663 0.0209074696 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
17 AH1_2nd_14:bin_000003 -1.193736037 0.0258952249 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
18 AH1_2nd_18:bin_000024 -1.188731159 0.0611452591 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Marinifilaceae
19 AH1_2nd_9:bin_000002 -1.169209782 0.0986538496 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
20 AH1_2nd_12:bin_000012 -1.060226151 0.0256488405 d__Bacteria Campylobacterota c__Campylobacteria Campylobacterales Helicobacteraceae
21 AH1_2nd_5:bin_000001 -0.996027576 0.0294171519 d__Bacteria Bacillota_C c__Negativicutes Selenomonadales
22 LI1_2nd_9:bin_000022 -0.906243708 0.0903292981 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
23 LI1_2nd_5:bin_000013 -0.829604319 0.1527144304 d__Bacteria Bacillota_A c__Clostridia Christensenellales DTU072
24 AH1_2nd_12:bin_000019 -0.825145331 0.2042360107 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
25 AH1_2nd_15:bin_000013 -0.710209451 0.1048903811 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
26 AH1_2nd_14:bin_000052 -0.703781720 0.0836982274 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
27 AH1_2nd_18:bin_000041 -0.639488073 0.1767526356 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
28 AH1_2nd_10:bin_000069 -0.638476918 0.1756392299 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
29 LI1_2nd_8:bin_000019 -0.626058321 0.1873913604 d__Bacteria Bacillota_A c__Clostridia Christensenellales UBA3700
30 LI1_2nd_8:bin_000048 -0.604410683 0.1802313047 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
31 AH1_2nd_18:bin_000039 -0.565089676 0.1344504970 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
32 AH1_2nd_15:bin_000001 -0.558917827 0.2775215236 d__Bacteria Pseudomonadota c__Alphaproteobacteria Rhizobiales Rhizobiaceae
33 LI1_2nd_1:bin_000014 -0.541762433 0.1908782875 d__Bacteria Desulfobacterota c__Desulfovibrionia Desulfovibrionales Desulfovibrionaceae
34 AH1_2nd_17:bin_000020 -0.529683120 0.1375747225 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
35 AH1_2nd_5:bin_000037 -0.412726510 0.3766702653 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
36 LI1_2nd_8:bin_000030 -0.401958059 1.0000000000 d__Bacteria Actinomycetota c__Actinomycetia Mycobacteriales Mycobacteriaceae
37 AH1_2nd_8:bin_000027 -0.372699058 0.3929034840 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
38 AH1_2nd_20:bin_000016 -0.367964849 0.4149817314 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
39 AH1_2nd_15:bin_000004 -0.363232962 0.4110273927 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
40 AH1_2nd_20:bin_000061 -0.298108663 0.5019948183 d__Bacteria Bacillota c__Bacilli Lactobacillales Enterococcaceae
41 AH1_2nd_19:bin_000050 -0.289132629 0.4961320864 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
42 AH1_2nd_14:bin_000063 -0.241075741 0.4791871743 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
43 AH1_2nd_12:bin_000018 -0.233278943 1.0000000000 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
44 AH1_2nd_14:bin_000014 -0.191639074 0.5967459585 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
45 AH1_2nd_5:bin_000069 -0.113362480 0.7480149690 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
46 AH1_2nd_5:bin_000004 -0.099553779 0.7766158242 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Acutalibacteraceae
47 AH1_2nd_19:bin_000053 -0.064499564 0.8633425245 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
48 AH1_2nd_5:bin_000023 -0.061255060 0.8885990209 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
49 LI1_2nd_4:bin_000052 -0.059179520 0.8521593297 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
50 AH1_2nd_7:bin_000011 -0.022457084 0.9485771277 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
51 AH1_2nd_7:bin_000036 -0.020211734 0.9505096511 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
52 AH1_2nd_8:bin_000007 -0.015776367 0.9642381855 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
53 AH1_2nd_18:bin_000033 0.007439884 0.9829288918 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Coprobacillaceae
54 AH1_2nd_13:bin_000049 0.007967211 0.9806505882 d__Bacteria Bacillota_A c__Clostridia Christensenellales UBA3700
55 AH1_2nd_20:bin_000075 0.011269835 0.9740329519 d__Bacteria Desulfobacterota c__Desulfovibrionia Desulfovibrionales Desulfovibrionaceae
56 AH1_2nd_1:bin_000048 0.022520775 0.9415136028 d__Bacteria Bacillota_A c__Clostridia Peptostreptococcales Anaerovoracaceae
57 AH1_2nd_15:bin_000009 0.050832331 0.8809383092 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
58 LI1_2nd_3:bin_000015 0.100951096 0.7675764926 d__Bacteria Bacillota c__Bacilli Staphylococcales Staphylococcaceae
59 AH1_2nd_12:bin_000008 0.126572793 0.7200772057 d__Bacteria Bacillota c__Bacilli Lactobacillales Streptococcaceae
60 AH1_2nd_6:bin_000046 0.148642513 0.7391254614 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
61 AH1_2nd_15:bin_000043 0.162855259 0.6651236201 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
62 AH1_2nd_14:bin_000032 0.203085142 0.5604935050 d__Bacteria Bacillota_C c__Negativicutes Selenomonadales Massilibacillaceae
63 AH1_2nd_11:bin_000028 0.215783039 0.6001649151 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
64 AH1_2nd_19:bin_000055 0.241280202 0.5605744834 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
65 AH1_2nd_1:bin_000015 0.248363743 0.5365901183 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
66 LI1_2nd_1:bin_000006 0.256745957 0.4812257132 d__Bacteria Bacillota_B c__Peptococcia Peptococcales Peptococcaceae
67 LI1_2nd_4:bin_000041 0.275507297 0.4771321706 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
68 AH1_2nd_8:bin_000051 0.409027135 0.2422754936 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
69 LI1_2nd_3:bin_000003 0.426226521 0.3026156952 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
70 AH1_2nd_11:bin_000005 0.439025859 0.3469594997 d__Bacteria Fusobacteriota c__Fusobacteriia Fusobacteriales Fusobacteriaceae
71 LI1_2nd_8:bin_000016 0.449295795 0.2725481226 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
72 AH1_2nd_9:bin_000047 0.468455027 0.1949450949 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
73 AH1_2nd_16:bin_000045 0.477451825 0.3015275739 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
74 AH1_2nd_1:bin_000002 0.672741699 0.0931456403 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Ruminococcaceae
75 LI1_2nd_4:bin_000034 0.683769866 0.1489775197 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
76 LI1_2nd_8:bin_000070 0.715744805 0.0557648829 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
77 LI1_2nd_8:bin_000079 0.759315418 0.1169813633 d__Bacteria Pseudomonadota c__Gammaproteobacteria Enterobacterales Enterobacteriaceae
78 LI1_2nd_7:bin_000009 0.778541309 0.0871078423 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Ruminococcaceae
79 LI1_2nd_7:bin_000078 0.818012844 0.2168112843 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
80 AH1_2nd_7:bin_000027 0.898315397 1.0000000000 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
81 AH1_2nd_7:bin_000041 0.917073058 0.0786806187 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
82 AH1_2nd_7:bin_000004 0.930226516 0.0840011143 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
83 AH1_2nd_16:bin_000058 1.019983368 1.0000000000 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
84 LI1_2nd_7:bin_000016 1.054961961 0.0254528501 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
85 AH1_2nd_16:bin_000025 1.186912214 0.0246642650 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Ruminococcaceae
86 AH1_2nd_1:bin_000034 1.307370374 0.1316029549 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
87 AH1_2nd_12:bin_000007 1.669993570 1.0000000000 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
88 AH1_2nd_1:bin_000023 1.885620641 0.0022558153 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
89 LI1_2nd_8:bin_000064 1.926369204 0.0019001955 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
90 AH1_2nd_20:bin_000042 1.959227946 1.0000000000 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
genus species
1 Coprobacillus
2 JAAYNV01
3 Scatousia
4 Mycoplasmoides
5
6 CAG-95
7 Alistipes
8 Odoribacter
9 UBA866
10 Mailhella
11 Parabacteroides_B
12
13
14 Odoribacter
15
16 Bacteroides Bacteroides ovatus
17 Hungatella_A
18 Odoribacter
19 Phocaeicola
20 Helicobacter_J
21
22 Oscillibacter
23
24
25 Ventrimonas
26 Bacteroides
27 Bacteroides
28 Bacteroides
29
30
31 Alistipes
32 Agrobacterium Agrobacterium tumefaciens_H
33
34 Clostridium_Q
35 Pseudoflavonifractor
36 Corynebacterium
37 NSJ-61
38
39 UMGS1251
40 Enterococcus
41
42 Blautia_A
43 Alistipes
44 Marseille-P3106
45 Bacteroides
46
47 CAG-56
48 Blautia
49 Enterocloster
50 Lacrimispora
51 Intestinimonas
52 Dielma
53 Beduini
54
55 Mailhella
56
57 Acetatifactor
58 Staphylococcus Staphylococcus shinii
59 Lactococcus Lactococcus formosensis
60 Bacteroides
61 Bacteroides
62
63 Bacteroides
64 Parabacteroides
65 MGBC136627
66 RGIG6463
67 Clostridium_Q
68 Bacteroides
69 Alistipes
70 Fusobacterium_A Fusobacterium_A ulcerans
71 Rikenella
72 Bacteroides
73 Alistipes
74 Fournierella
75 Bacteroides Bacteroides thetaiotaomicron
76 Bacteroides
77 Citrobacter_A Citrobacter_A amalonaticus
78 Anaerotruncus
79 Copromonas
80 Copromonas
81
82 Eisenbergiella
83 Enterocloster
84 Clostridium_AQ
85 Negativibacillus
86 Dielma
87
88
89 Parabacteroides
90 Hungatella
colors_alphabetic <- read_tsv("https://raw.githubusercontent.com/earthhologenome/EHI_taxonomy_colour/main/ehi_phylum_colors.tsv") %>%
mutate_at(vars(phylum), ~ str_replace(., "[dpcofgs]__", "")) %>%
right_join(taxonomy, by=join_by(phylum == phylum)) %>%
dplyr::select(phylum, colors) %>%
mutate(colors = str_c(colors, "80")) %>% #add 80% alpha
unique() %>%
dplyr::arrange(phylum)
tax_table <- as.data.frame(unique(ancombc_rand_table_mag$phylum))
colnames(tax_table)[1] <- "phylum"
tax_color <- merge(tax_table, colors_alphabetic, by="phylum")%>%
dplyr::arrange(phylum) %>%
dplyr::select(colors) %>%
pull()ancombc_rand_table_mag %>%
mutate(
genome = factor(taxon, levels = ancombc_rand_table_mag$taxon),
significance = ifelse(p_time_pointFMT1 < 0.05, phylum, NA) # Set non-significant to NA (not mapped in legend)
) %>%
ggplot() +
# Plot significant points with legend
geom_point(aes(x = lfc_time_pointFMT1, y = -log10(p_time_pointFMT1), color = significance),
size = 3, alpha = 0.7, na.rm = TRUE) +
# Plot non-significant points separately without legend
geom_point(data = filter(ancombc_rand_table_mag, p_time_pointFMT1 >= 0.05),
aes(x = lfc_time_pointFMT1, y = -log10(p_time_pointFMT1)),
color = "grey70", size = 3, alpha = 0.7, show.legend = FALSE) +
scale_color_manual(
values = tax_color, # Only keeps phylum colors in legend
na.translate = FALSE # Removes NA (non-significant) from legend
) +
geom_hline(yintercept = -log10(0.05), linetype = "dashed") +
geom_vline(xintercept = 0, linetype = "dashed") +
scale_y_continuous(limits = c(0, 4.5)) +
xlab("log2FoldChange") +
ylab("-log10(p-value)") +
guides(color = guide_legend(title = "Phylum")) +
theme_minimal()+
annotate("text", x = min(ancombc_rand_table_mag$lfc_time_pointFMT1), y = 4.5,
label = "Acclimation", hjust = 0, size = 4, fontface = "bold") +
annotate("text", x = max(ancombc_rand_table_mag$lfc_time_pointFMT1), y = 4.5,
label = "FMT1", hjust = 1, size = 4, fontface = "bold")Phyla of the significant MAGs in FMT1
ancombc_rand_table_mag%>%
filter(p_time_pointFMT1 < 0.05) %>%
filter(lfc_time_pointFMT1>0) %>%
count(phylum, name = "sample_count") %>%
arrange(desc(sample_count)) phylum sample_count
1 Bacillota_A 2
2 Bacillota 1
3 Bacteroidota 1
Phyla of the significant MAGs in acclimation
ancombc_rand_table_mag%>%
filter(p_time_pointFMT1 < 0.05) %>%
filter(lfc_time_pointFMT1<0) %>%
count(phylum, name = "sample_count") %>%
arrange(desc(sample_count)) phylum sample_count
1 Bacteroidota 5
2 Bacillota_A 3
3 Bacillota 2
4 Bacillota_C 1
5 Campylobacterota 1
6 Cyanobacteriota 1
7 Verrucomicrobiota 1
15.5.3.2 CC: acclimation vs FMT1
Structural zeros
struc <- structural_zeros %>%
filter(present=="Acclimation")%>%
count(phylum, name = "Acclimation") %>%
arrange(desc(Acclimation))
structural_zeros %>%
filter(present=="FMT1")%>%
count(phylum, name = "FMT1") %>%
arrange(desc(FMT1)) %>%
full_join(., struc, by="phylum") %>%
mutate(across(everything(), ~ ifelse(is.na(.), 0, .))) %>%
tt()| phylum | FMT1 | Acclimation |
|---|---|---|
| p__Bacillota_A | 15 | 20 |
| p__Bacteroidota | 10 | 8 |
| p__Bacillota | 4 | 8 |
| p__Bacillota_C | 3 | 0 |
| p__Actinomycetota | 2 | 0 |
| p__Desulfobacterota | 1 | 1 |
| p__Fusobacteriota | 1 | 0 |
| p__Pseudomonadota | 1 | 6 |
| p__Cyanobacteriota | 0 | 3 |
| p__Verrucomicrobiota | 0 | 3 |
| p__Campylobacterota | 0 | 1 |
phylo_samples <- sample_metadata %>%
filter(type == "Cold_control" & time_point %in% c("Acclimation", "FMT1") )%>%
column_to_rownames("Tube_code") %>%
sample_data()
phylo_genome <- genome_counts_filt %>%
filter(!genome %in% structural_zeros$genome) %>%
select(one_of(c("genome",rownames(phylo_samples)))) %>%
filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
select(genome, where(~ is.numeric(.) && sum(.) > 0)) %>%
column_to_rownames("genome") %>%
otu_table(., taxa_are_rows = TRUE)
phylo_taxonomy <- genome_metadata %>%
filter(genome %in% rownames(phylo_genome)) %>%
column_to_rownames("genome") %>%
dplyr::select(domain,phylum,class,order,family,genus,species) %>%
as.matrix() %>%
tax_table()
physeq_genome_filtered <- phyloseq(phylo_genome, phylo_taxonomy, phylo_samples)ancom_rand_output_cc_accli_fmt1 = ancombc2(data = physeq_genome_filtered,
assay_name = "counts",
tax_level = NULL,
fix_formula = "time_point",
rand_formula = "(1|individual)",
p_adj_method = "holm",
pseudo_sens = TRUE,
prv_cut =0,
lib_cut = 0,
s0_perc = 0.05,
group = NULL,
struc_zero = FALSE,
neg_lb = FALSE,
alpha = 0.05,
n_cl = 2,
verbose = TRUE,
global = FALSE,
pairwise = FALSE,
dunnet = FALSE,
trend = FALSE,
iter_control = list(tol = 1e-5, max_iter = 20, verbose = FALSE),
em_control = list(tol = 1e-5, max_iter = 100),
lme_control = lme4::lmerControl(),
mdfdr_control = list(fwer_ctrl_method = "holm", B = 100),
trend_control = NULL)ancom_rand_output_cc_accli_fmt1$res %>%
dplyr::select(taxon, lfc_time_pointFMT1, p_time_pointFMT1) %>%
filter(p_time_pointFMT1 < 0.05) %>%
left_join(., genome_metadata, by=join_by("taxon"=="genome")) %>%
select(2,3,7,8,9) %>%
tt() | lfc_time_pointFMT1 | p_time_pointFMT1 | order | family | genus |
|---|---|---|---|---|
| -0.05294644 | 1.020782e-03 | o__Bacteroidales | f__Rikenellaceae | g__Alistipes |
| -2.00026643 | 4.298128e-03 | o__Mycoplasmatales | f__Mycoplasmoidaceae | g__Mycoplasmoides |
| 0.35440645 | 1.512560e-08 | o__Rhizobiales | f__Rhizobiaceae | g__Agrobacterium |
| 1.17164883 | 1.483703e-02 | o__Lachnospirales | f__Lachnospiraceae | g__Clostridium_Q |
| 0.63703919 | 5.965904e-03 | o__Bacteroidales | f__Marinifilaceae | g__Odoribacter |
| -1.55106118 | 9.006749e-03 | o__Lachnospirales | f__Lachnospiraceae | g__Roseburia |
| 0.84138271 | 2.415877e-10 | o__Desulfovibrionales | f__Desulfovibrionaceae | g__Mailhella |
| -1.88284515 | 2.223632e-03 | o__Opitutales | f__LL51 | g__ |
| 2.40157567 | 3.593438e-03 | o__Bacteroidales | f__Tannerellaceae | g__Parabacteroides |
| -1.02439559 | 3.132840e-02 | o__Gastranaerophilales | f__Gastranaerophilaceae | g__Scatousia |
| 2.27246087 | 6.049789e-04 | o__Lachnospirales | f__Lachnospiraceae | g__ |
| 2.09918735 | 2.272274e-02 | o__Erysipelotrichales | f__Erysipelotrichaceae | g__Dielma |
| -0.13201767 | 6.157531e-07 | o__Oscillospirales | f__Acutalibacteraceae | g__ |
| 0.41463549 | 7.396983e-08 | o__Lachnospirales | f__Lachnospiraceae | g__Blautia |
| 1.60289164 | 2.561034e-02 | o__Lachnospirales | f__Lachnospiraceae | g__Lacrimispora |
| 1.15547613 | 4.032184e-02 | o__Lachnospirales | f__Lachnospiraceae | g__Copromonas |
| 0.98965563 | 3.228020e-02 | o__Bacteroidales | f__Tannerellaceae | g__Parabacteroides |
| -1.61791528 | 7.080058e-10 | o__Lachnospirales | f__Lachnospiraceae | g__CAG-95 |
| -0.03682354 | 2.173338e-02 | o__Erysipelotrichales | f__Erysipelotrichaceae | g__Dielma |
| 0.76092641 | 3.213289e-02 | o__Bacteroidales | f__Bacteroidaceae | g__Bacteroides |
| -0.33664976 | 8.276106e-06 | o__Bacteroidales | f__Bacteroidaceae | g__ |
| 1.71934159 | 8.435943e-03 | o__Bacteroidales | f__Tannerellaceae | g__Parabacteroides |
| 1.69860100 | 1.457330e-03 | o__Bacteroidales | f__Bacteroidaceae | g__Bacteroides |
taxonomy <- data.frame(physeq_genome_filtered@tax_table) %>%
rownames_to_column(., "taxon") %>%
mutate_at(vars(order, phylum, family, genus, species), ~ str_replace(., "[dpcofgs]__", ""))
ancombc_rand_table_mag <- ancom_rand_output_cc_accli_fmt1$res %>%
dplyr::select(taxon, lfc_time_pointFMT1, p_time_pointFMT1) %>%
#filter(p_time_pointFMT1 < 0.05) %>%
dplyr::arrange(p_time_pointFMT1) %>%
merge(., taxonomy, by="taxon") %>%
mutate_at(vars(phylum, species), ~ str_replace(., "[dpcofgs]__", ""))%>%
dplyr::arrange(lfc_time_pointFMT1)
ancombc_rand_table_mag taxon lfc_time_pointFMT1 p_time_pointFMT1 domain phylum class order family
1 AH1_2nd_12:bin_000041 -2.000266425 4.298128e-03 d__Bacteria Bacillota c__Bacilli Mycoplasmatales Mycoplasmoidaceae
2 AH1_2nd_19:bin_000052 -1.882845155 2.223632e-03 d__Bacteria Verrucomicrobiota c__Verrucomicrobiae Opitutales LL51
3 AH1_2nd_1:bin_000005 -1.665135795 2.966206e-01 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
4 AH1_2nd_13:bin_000029 -1.645734439 1.300459e-01 d__Bacteria Pseudomonadota c__Alphaproteobacteria UBA3830 UBA3830
5 AH1_2nd_8:bin_000006 -1.617915280 7.080058e-10 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
6 AH1_2nd_19:bin_000005 -1.551061184 9.006749e-03 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
7 AH1_2nd_7:bin_000015 -1.548997604 1.029942e-01 d__Bacteria Pseudomonadota c__Alphaproteobacteria RF32 CAG-239
8 LI1_2nd_1:bin_000014 -1.344212147 1.794418e-01 d__Bacteria Desulfobacterota c__Desulfovibrionia Desulfovibrionales Desulfovibrionaceae
9 LI1_2nd_7:bin_000042 -1.283364395 7.717019e-02 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
10 AH1_2nd_1:bin_000003 -1.024395595 3.132840e-02 d__Bacteria Cyanobacteriota c__Vampirovibrionia Gastranaerophilales Gastranaerophilaceae
11 AH1_2nd_12:bin_000012 -0.857025351 9.239810e-02 d__Bacteria Campylobacterota c__Campylobacteria Campylobacterales Helicobacteraceae
12 AH1_2nd_12:bin_000056 -0.630383266 4.846583e-01 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
13 AH1_2nd_8:bin_000027 -0.476488990 6.481804e-01 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
14 AH1_2nd_15:bin_000043 -0.469767220 5.882203e-01 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
15 AH1_2nd_15:bin_000002 -0.458253339 9.329558e-02 d__Bacteria Cyanobacteriota c__Vampirovibrionia Gastranaerophilales Gastranaerophilaceae
16 AH1_2nd_19:bin_000001 -0.451145097 5.092757e-01 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
17 AH1_2nd_5:bin_000069 -0.414686954 4.056860e-01 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
18 AH1_2nd_12:bin_000008 -0.345661076 7.669333e-01 d__Bacteria Bacillota c__Bacilli Lactobacillales Streptococcaceae
19 LI1_2nd_4:bin_000036 -0.336649759 8.276106e-06 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
20 AH1_2nd_14:bin_000063 -0.332541685 6.714184e-01 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
21 LI1_2nd_5:bin_000013 -0.325271149 5.715231e-01 d__Bacteria Bacillota_A c__Clostridia Christensenellales DTU072
22 AH1_2nd_10:bin_000069 -0.318041295 9.433433e-02 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
23 AH1_2nd_14:bin_000003 -0.288272311 1.670150e-01 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
24 AH1_2nd_15:bin_000021 -0.277614214 5.981331e-01 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
25 AH1_2nd_19:bin_000053 -0.218579282 5.310912e-01 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
26 AH1_2nd_5:bin_000004 -0.132017667 6.157531e-07 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Acutalibacteraceae
27 AH1_2nd_9:bin_000002 -0.119671900 8.463868e-01 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
28 AH1_2nd_18:bin_000013 -0.102856803 6.148871e-01 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
29 AH1_2nd_10:bin_000010 -0.056703910 4.735064e-01 d__Bacteria Cyanobacteriota c__Vampirovibrionia Gastranaerophilales Gastranaerophilaceae
30 AH1_2nd_10:bin_000041 -0.052946441 1.020782e-03 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
31 AH1_2nd_8:bin_000007 -0.036823541 2.173338e-02 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
32 LI1_2nd_4:bin_000041 0.007852236 9.864813e-01 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
33 LI1_2nd_8:bin_000019 0.042559551 9.547561e-01 d__Bacteria Bacillota_A c__Clostridia Christensenellales UBA3700
34 AH1_2nd_1:bin_000002 0.082912552 9.269474e-01 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Ruminococcaceae
35 AH1_2nd_15:bin_000009 0.118943844 7.743671e-01 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
36 AH1_2nd_10:bin_000009 0.132804718 9.229210e-01 d__Bacteria Desulfobacterota c__Desulfovibrionia Desulfovibrionales Desulfovibrionaceae
37 AH1_2nd_19:bin_000050 0.208408084 5.553207e-01 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
38 AH1_2nd_9:bin_000047 0.267209131 4.171579e-01 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
39 AH1_2nd_7:bin_000004 0.289820892 6.930117e-01 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
40 AH1_2nd_15:bin_000001 0.354406452 1.512560e-08 d__Bacteria Pseudomonadota c__Alphaproteobacteria Rhizobiales Rhizobiaceae
41 AH1_2nd_16:bin_000045 0.357010392 8.352287e-02 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
42 AH1_2nd_5:bin_000023 0.414635489 7.396983e-08 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
43 LI1_2nd_7:bin_000016 0.436780747 4.912489e-01 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
44 AH1_2nd_12:bin_000018 0.515214110 3.343744e-01 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
45 AH1_2nd_9:bin_000015 0.517317627 2.691657e-01 d__Bacteria Desulfobacterota c__Desulfovibrionia Desulfovibrionales Desulfovibrionaceae
46 AH1_2nd_7:bin_000041 0.572340514 2.017542e-01 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
47 AH1_2nd_17:bin_000029 0.630370592 2.395506e-01 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
48 AH1_2nd_7:bin_000006 0.630734317 6.606338e-01 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
49 AH1_2nd_18:bin_000024 0.637039187 5.965904e-03 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Marinifilaceae
50 AH1_2nd_15:bin_000004 0.646830855 6.362064e-02 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
51 AH1_2nd_14:bin_000052 0.660179503 2.931944e-01 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
52 AH1_2nd_8:bin_000051 0.760926411 3.213289e-02 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
53 LI1_2nd_1:bin_000006 0.827553585 1.589541e-01 d__Bacteria Bacillota_B c__Peptococcia Peptococcales Peptococcaceae
54 AH1_2nd_19:bin_000011 0.841382706 2.415877e-10 d__Bacteria Desulfobacterota c__Desulfovibrionia Desulfovibrionales Desulfovibrionaceae
55 AH1_2nd_7:bin_000036 0.913967361 5.945868e-02 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
56 AH1_2nd_7:bin_000065 0.989655634 3.228020e-02 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
57 LI1_2nd_8:bin_000048 1.004333054 2.120711e-01 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
58 AH1_2nd_7:bin_000027 1.155476129 4.032184e-02 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
59 AH1_2nd_17:bin_000020 1.171648828 1.483703e-02 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
60 AH1_2nd_7:bin_000011 1.602891637 2.561034e-02 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
61 LI1_2nd_8:bin_000070 1.698601003 1.457330e-03 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
62 LI1_2nd_8:bin_000064 1.719341585 8.435943e-03 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
63 AH1_2nd_18:bin_000041 1.801032415 1.225818e-01 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
64 AH1_2nd_1:bin_000034 2.099187351 2.272274e-02 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
65 AH1_2nd_1:bin_000023 2.272460867 6.049789e-04 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
66 AH1_2nd_19:bin_000055 2.401575666 3.593438e-03 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
67 AH1_2nd_11:bin_000028 2.669065282 7.236994e-02 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
68 AH1_2nd_1:bin_000015 NA 1.000000e+00 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
69 AH1_2nd_1:bin_000048 NA 1.000000e+00 d__Bacteria Bacillota_A c__Clostridia Peptostreptococcales Anaerovoracaceae
70 AH1_2nd_10:bin_000049 NA 1.000000e+00 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
71 AH1_2nd_11:bin_000004 NA 1.000000e+00 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
72 AH1_2nd_11:bin_000009 NA 1.000000e+00 d__Bacteria Pseudomonadota c__Alphaproteobacteria RF32 CAG-239
73 AH1_2nd_12:bin_000007 NA 1.000000e+00 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
74 AH1_2nd_12:bin_000009 NA 1.000000e+00 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
75 AH1_2nd_12:bin_000044 NA 1.000000e+00 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
76 AH1_2nd_12:bin_000063 NA 1.000000e+00 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
77 AH1_2nd_13:bin_000011 NA 1.000000e+00 d__Bacteria Pseudomonadota c__Alphaproteobacteria RF32 CAG-239
78 AH1_2nd_14:bin_000014 NA 1.000000e+00 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
79 AH1_2nd_14:bin_000047 NA 1.000000e+00 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
80 AH1_2nd_15:bin_000013 NA 1.000000e+00 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
81 AH1_2nd_15:bin_000025 NA 1.000000e+00 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
82 AH1_2nd_16:bin_000025 NA 1.000000e+00 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Ruminococcaceae
83 AH1_2nd_16:bin_000058 NA 1.000000e+00 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
84 AH1_2nd_17:bin_000030 NA 1.000000e+00 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
85 AH1_2nd_18:bin_000033 NA 1.000000e+00 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Coprobacillaceae
86 AH1_2nd_18:bin_000039 NA 1.000000e+00 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
87 AH1_2nd_18:bin_000047 NA 1.000000e+00 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
88 AH1_2nd_19:bin_000067 NA 1.000000e+00 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
89 AH1_2nd_2:bin_000003 NA 1.000000e+00 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
90 AH1_2nd_20:bin_000027 NA 1.000000e+00 d__Bacteria Desulfobacterota c__Desulfovibrionia Desulfovibrionales Desulfovibrionaceae
91 AH1_2nd_20:bin_000061 NA 1.000000e+00 d__Bacteria Bacillota c__Bacilli Lactobacillales Enterococcaceae
92 AH1_2nd_20:bin_000073 NA 1.000000e+00 d__Bacteria Bacillota c__Bacilli Lactobacillales Enterococcaceae
93 AH1_2nd_5:bin_000037 NA 1.000000e+00 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
94 AH1_2nd_7:bin_000010 NA 1.000000e+00 d__Bacteria Pseudomonadota c__Alphaproteobacteria RF32 CAG-239
95 AH1_2nd_7:bin_000017 NA 1.000000e+00 d__Bacteria Desulfobacterota c__Desulfovibrionia Desulfovibrionales Desulfovibrionaceae
96 AH1_2nd_7:bin_000060 NA 1.000000e+00 d__Bacteria Bacillota_A c__Clostridia Eubacteriales Eubacteriaceae
97 AH1_2nd_7:bin_000070 NA 1.000000e+00 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
98 AH1_2nd_8:bin_000056 NA 1.000000e+00 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
99 LI1_2nd_10:bin_000017 NA 1.000000e+00 d__Bacteria Chlamydiota c__Chlamydiia Chlamydiales Chlamydiaceae
100 LI1_2nd_3:bin_000003 NA 1.000000e+00 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
genus species
1 Mycoplasmoides
2
3
4
5 CAG-95
6 Roseburia
7 CAZU01
8
9 Parabacteroides_B
10 Scatousia
11 Helicobacter_J
12 Enterocloster
13 NSJ-61
14 Bacteroides
15 Limenecus
16 Parabacteroides
17 Bacteroides
18 Lactococcus Lactococcus formosensis
19
20 Blautia_A
21
22 Bacteroides
23 Hungatella_A
24
25 CAG-56
26
27 Phocaeicola
28 Parabacteroides
29 CALURL01
30 Alistipes
31 Dielma
32 Clostridium_Q
33
34 Fournierella
35 Acetatifactor
36 Bilophila
37
38 Bacteroides
39 Eisenbergiella
40 Agrobacterium Agrobacterium tumefaciens_H
41 Alistipes
42 Blautia
43 Clostridium_AQ
44 Alistipes
45 Desulfovibrio
46
47 NSJ-61
48 JALFVM01
49 Odoribacter
50 UMGS1251
51 Bacteroides
52 Bacteroides
53 RGIG6463
54 Mailhella
55 Intestinimonas
56 Parabacteroides
57
58 Copromonas
59 Clostridium_Q
60 Lacrimispora
61 Bacteroides
62 Parabacteroides
63 Bacteroides
64 Dielma
65
66 Parabacteroides
67 Bacteroides
68 MGBC136627
69
70 Parabacteroides
71 Hungatella_A
72 Scatocola
73
74 Alistipes
75 Parabacteroides Parabacteroides distasonis
76 CHH4-2
77 MGBC133411
78 Marseille-P3106
79 Bacteroides
80 Ventrimonas
81 Phocaeicola
82 Negativibacillus
83 Enterocloster
84 Bacteroides
85 Beduini
86 Alistipes
87 Parabacteroides
88 Bacteroides Bacteroides ovatus
89 JAAYNV01
90 Desulfovibrio
91 Enterococcus
92 Enterococcus Enterococcus sp002174455
93 Pseudoflavonifractor
94 CAJLXD01
95 Lawsonia
96 Eubacterium
97 Pseudoflavonifractor
98 Bacteroides
99
100 Alistipes
[ reached 'max' / getOption("max.print") -- omitted 7 rows ]
colors_alphabetic <- read_tsv("https://raw.githubusercontent.com/earthhologenome/EHI_taxonomy_colour/main/ehi_phylum_colors.tsv") %>%
mutate_at(vars(phylum), ~ str_replace(., "[dpcofgs]__", "")) %>%
right_join(taxonomy, by=join_by(phylum == phylum)) %>%
dplyr::select(phylum, colors) %>%
mutate(colors = str_c(colors, "80")) %>% #add 80% alpha
unique() %>%
dplyr::arrange(phylum)
tax_table <- as.data.frame(unique(ancombc_rand_table_mag$phylum))
colnames(tax_table)[1] <- "phylum"
tax_color <- merge(tax_table, colors_alphabetic, by="phylum")%>%
dplyr::arrange(phylum) %>%
dplyr::select(colors) %>%
pull()ancombc_rand_table_mag %>%
mutate(
genome = factor(taxon, levels = ancombc_rand_table_mag$taxon),
significance = ifelse(p_time_pointFMT1 < 0.05, phylum, NA) # Set non-significant to NA (not mapped in legend)
) %>%
ggplot() +
# Plot significant points with legend
geom_point(aes(x = lfc_time_pointFMT1, y = -log10(p_time_pointFMT1), color = significance),
size = 3, alpha = 0.7, na.rm = TRUE) +
# Plot non-significant points separately without legend
geom_point(data = filter(ancombc_rand_table_mag, p_time_pointFMT1 >= 0.05),
aes(x = lfc_time_pointFMT1, y = -log10(p_time_pointFMT1)),
color = "grey70", size = 3, alpha = 0.7, show.legend = FALSE) +
scale_color_manual(
values = tax_color, # Only keeps phylum colors in legend
na.translate = FALSE # Removes NA (non-significant) from legend
) +
geom_hline(yintercept = -log10(0.05), linetype = "dashed") +
geom_vline(xintercept = 0, linetype = "dashed") +
scale_y_continuous(limits = c(0, 11)) +
xlab("log2FoldChange") +
ylab("-log10(p-value)") +
guides(color = guide_legend(title = "Phylum")) +
theme_minimal()+
annotate("text", x = min(ancombc_rand_table_mag$lfc_time_pointFMT1)+0.2, y = 10,
label = "Acclimation", hjust = 0, size = 4, fontface = "bold") +
annotate("text", x = max(ancombc_rand_table_mag$lfc_time_pointFMT1)-0.2, y = 10,
label = "FMT1", hjust = 1, size = 4, fontface = "bold")+
theme(plot.margin = margin(10, 10, 10, 10), clip = "off")Phyla of the significant MAGs in FMT1
ancombc_rand_table_mag%>%
filter(p_time_pointFMT1 < 0.05) %>%
filter(lfc_time_pointFMT1>0) %>%
count(phylum, name = "sample_count") %>%
arrange(desc(sample_count)) phylum sample_count
1 Bacteroidota 6
2 Bacillota_A 5
3 Bacillota 1
4 Desulfobacterota 1
5 Pseudomonadota 1
Phyla of the significant MAGs in acclimation
ancombc_rand_table_mag%>%
filter(p_time_pointFMT1 < 0.05) %>%
filter(lfc_time_pointFMT1<0) %>%
count(phylum, name = "sample_count") %>%
arrange(desc(sample_count)) phylum sample_count
1 Bacillota_A 3
2 Bacillota 2
3 Bacteroidota 2
4 Cyanobacteriota 1
5 Verrucomicrobiota 1
15.5.3.3 WC: acclimation vs FMT1
Structural zeros
struc <- structural_zeros %>%
filter(present=="Acclimation")%>%
count(phylum, name = "Acclimation") %>%
arrange(desc(Acclimation))
structural_zeros %>%
filter(present=="FMT1")%>%
count(phylum, name = "FMT1") %>%
arrange(desc(FMT1)) %>%
full_join(., struc, by="phylum") %>%
mutate(across(everything(), ~ ifelse(is.na(.), 0, .))) %>%
tt()| phylum | FMT1 | Acclimation |
|---|---|---|
| p__Bacillota_A | 8 | 24 |
| p__Bacillota | 4 | 9 |
| p__Bacteroidota | 4 | 9 |
| p__Bacillota_C | 3 | 0 |
| p__Pseudomonadota | 2 | 7 |
| p__Desulfobacterota | 1 | 3 |
| p__Cyanobacteriota | 0 | 4 |
| p__Verrucomicrobiota | 0 | 2 |
| p__Bacillota_B | 0 | 1 |
phylo_samples <- sample_metadata %>%
filter(type == "Warm_control" & time_point %in% c("Acclimation", "FMT1") )%>%
column_to_rownames("Tube_code") %>%
sample_data()
phylo_genome <- genome_counts_filt %>%
filter(!genome %in% structural_zeros$genome) %>%
select(one_of(c("genome",rownames(phylo_samples)))) %>%
filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
select(genome, where(~ is.numeric(.) && sum(.) > 0)) %>%
column_to_rownames("genome") %>%
otu_table(., taxa_are_rows = TRUE)
phylo_taxonomy <- genome_metadata %>%
filter(genome %in% rownames(phylo_genome)) %>%
column_to_rownames("genome") %>%
dplyr::select(domain,phylum,class,order,family,genus,species) %>%
as.matrix() %>%
tax_table()
physeq_genome_filtered <- phyloseq(phylo_genome, phylo_taxonomy, phylo_samples)ancom_rand_output_wc_accli_fmt1 = ancombc2(data = physeq_genome_filtered,
assay_name = "counts",
tax_level = NULL,
fix_formula = "time_point",
p_adj_method = "holm",
pseudo_sens = TRUE,
prv_cut =0,
lib_cut = 0,
s0_perc = 0.05,
group = NULL,
struc_zero = FALSE,
neg_lb = FALSE,
alpha = 0.05,
n_cl = 2,
verbose = TRUE,
global = FALSE,
pairwise = FALSE,
dunnet = FALSE,
trend = FALSE,
iter_control = list(tol = 1e-5, max_iter = 20, verbose = FALSE),
em_control = list(tol = 1e-5, max_iter = 100),
mdfdr_control = list(fwer_ctrl_method = "holm", B = 100),
trend_control = NULL)ancom_rand_output_wc_accli_fmt1$res %>%
dplyr::select(taxon, lfc_time_pointFMT1, p_time_pointFMT1) %>%
filter(p_time_pointFMT1 < 0.05) %>%
left_join(., genome_metadata, by=join_by("taxon"=="genome")) %>%
select(2,3,7,8,9) %>%
tt() | lfc_time_pointFMT1 | p_time_pointFMT1 | order | family | genus |
|---|---|---|---|---|
| -1.4147020 | 0.0079624151 | o__Gastranaerophilales | f__Gastranaerophilaceae | g__Limenecus |
| -1.6335512 | 0.0015915022 | o__Bacteroidales | f__Bacteroidaceae | g__Bacteroides |
| 2.2048197 | 0.0027319824 | o__Bacteroidales | f__Tannerellaceae | g__Parabacteroides |
| -0.9719098 | 0.0338244363 | o__Lachnospirales | f__Lachnospiraceae | g__Hungatella_A |
| 1.9160385 | 0.0008275244 | o__Fusobacteriales | f__Fusobacteriaceae | g__Fusobacterium_A |
| 1.7589146 | 0.0289403764 | o__Campylobacterales | f__Helicobacteraceae | g__Helicobacter_J |
| -1.2336775 | 0.0177056512 | o__Lachnospirales | f__Lachnospiraceae | g__Hungatella_A |
| -0.9224891 | 0.0194457088 | o__Bacteroidales | f__Marinifilaceae | g__Odoribacter |
| -1.2168819 | 0.0048334173 | o__Lachnospirales | f__Lachnospiraceae | g__Enterocloster |
| -1.3990257 | 0.0176505048 | o__Lachnospirales | f__Lachnospiraceae | g__Roseburia |
| 1.0227752 | 0.0208942361 | o__Lachnospirales | f__Lachnospiraceae | g__ |
| -1.3990617 | 0.0292190491 | o__Lachnospirales | f__Lachnospiraceae | g__Kineothrix |
| -1.6368805 | 0.0033069688 | o__Desulfovibrionales | f__Desulfovibrionaceae | g__Desulfovibrio |
| -1.7932455 | 0.0038411118 | o__Lachnospirales | f__Lachnospiraceae | g__JAAYNV01 |
| 1.0028863 | 0.0399559198 | o__Bacteroidales | f__Tannerellaceae | g__Parabacteroides |
| -2.7248646 | 0.0143167820 | o__Bacteroidales | f__Marinifilaceae | g__Odoribacter |
| -1.2349255 | 0.0118533968 | o__UBA3830 | f__UBA3830 | g__ |
| -2.5444915 | 0.0181963898 | o__RF39 | f__UBA660 | g__Faecisoma |
| -0.8132650 | 0.0410727153 | o__Oscillospirales | f__Oscillospiraceae | g__Intestinimonas |
| -1.6887136 | 0.0052260245 | o__Campylobacterales | f__Helicobacteraceae | g__NHYM01 |
| 0.8742795 | 0.0304885224 | o__Lachnospirales | f__Lachnospiraceae | g__ |
| -1.6911528 | 0.0075333214 | o__Oscillospirales | f__Ruminococcaceae | g__Ruthenibacterium |
| -1.2248435 | 0.0031293651 | o__Christensenellales | f__MGBC116941 | g__MGBC116941 |
| -1.3822835 | 0.0145873552 | o__Bacteroidales | f__Rikenellaceae | g__Alistipes |
| -1.0354069 | 0.0354665938 | o__Christensenellales | f__ | g__ |
| -1.2478241 | 0.0049555216 | o__Bacteroidales | f__Marinifilaceae | g__Odoribacter |
| 1.9196797 | 0.0073599170 | o__Bacteroidales | f__Bacteroidaceae | g__Bacteroides |
| -0.9705541 | 0.0400355874 | o__Christensenellales | f__DTU072 | g__ |
| 0.9974229 | 0.0322636387 | o__UBA3830 | f__ | g__ |
| -0.8119953 | 0.0245159238 | o__Bacteroidales | f__Marinifilaceae | g__Odoribacter |
| 1.7039486 | 0.0022695466 | o__Erysipelotrichales | f__Erysipelotrichaceae | g__Breznakia |
| 0.9438507 | 0.0481624226 | o__Oscillospirales | f__Ruminococcaceae | g__Anaerotruncus |
| 1.3967021 | 0.0228792426 | o__Erysipelotrichales | f__Erysipelotrichaceae | g__Clostridium_AQ |
| 1.6782542 | 0.0001554928 | o__Lachnospirales | f__Lachnospiraceae | g__ |
| 0.8341143 | 0.0297704979 | o__Bacteroidales | f__Bacteroidaceae | g__Bacteroides |
| -2.2451028 | 0.0207309381 | o__Bacteroidales | f__Rikenellaceae | g__Alistipes |
| -1.0173105 | 0.0409645084 | o__Bacteroidales | f__Rikenellaceae | g__Rikenella |
| 1.4037398 | 0.0434404072 | o__Christensenellales | f__UBA3700 | g__ |
| -2.1061921 | 0.0255031097 | o__Oscillospirales | f__Ruminococcaceae | g__Angelakisella |
| -2.8140777 | 0.0023998639 | o__Mycoplasmatales | f__Mycoplasmoidaceae | g__Mycoplasmoides |
| -1.0993689 | 0.0246772376 | o__Lachnospirales | f__Lachnospiraceae | g__ |
| 1.3411358 | 0.0251547320 | o__RF32 | f__CAG-239 | g__CAJLXD01 |
taxonomy <- data.frame(physeq_genome_filtered@tax_table) %>%
rownames_to_column(., "taxon") %>%
mutate_at(vars(order, phylum, family, genus, species), ~ str_replace(., "[dpcofgs]__", ""))
ancombc_rand_table_mag <- ancom_rand_output_wc_accli_fmt1$res %>%
dplyr::select(taxon, lfc_time_pointFMT1, p_time_pointFMT1) %>%
#filter(p_time_pointFMT1 < 0.05) %>%
dplyr::arrange(p_time_pointFMT1) %>%
merge(., taxonomy, by="taxon") %>%
mutate_at(vars(phylum, species), ~ str_replace(., "[dpcofgs]__", ""))%>%
dplyr::arrange(lfc_time_pointFMT1)
ancombc_rand_table_mag taxon lfc_time_pointFMT1 p_time_pointFMT1 domain phylum class order family
1 AH1_2nd_2:bin_000018 -3.172045116 1.000000000 d__Bacteria Elusimicrobiota c__Elusimicrobia Elusimicrobiales Elusimicrobiaceae
2 LI1_2nd_8:bin_000045 -2.814077676 0.002399864 d__Bacteria Bacillota c__Bacilli Mycoplasmatales Mycoplasmoidaceae
3 AH1_2nd_6:bin_000002 -2.724864564 0.014316782 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Marinifilaceae
4 AH1_2nd_6:bin_000035 -2.544491492 0.018196390 d__Bacteria Bacillota c__Bacilli RF39 UBA660
5 AH1_2nd_20:bin_000053 -2.459596342 0.068593011 d__Bacteria Bacillota_A c__Clostridia Christensenellales UBA1242
6 LI1_2nd_8:bin_000006 -2.245102794 0.020730938 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
7 LI1_2nd_8:bin_000044 -2.106192139 0.025503110 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Ruminococcaceae
8 LI1_2nd_7:bin_000038 -1.914362784 1.000000000 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
9 AH1_2nd_2:bin_000003 -1.793245548 0.003841112 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
10 AH1_2nd_14:bin_000063 -1.725388252 0.107550596 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
11 LI1_2nd_2:bin_000002 -1.691152830 0.007533321 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Ruminococcaceae
12 AH1_2nd_7:bin_000028 -1.688713582 0.005226025 d__Bacteria Campylobacterota c__Campylobacteria Campylobacterales Helicobacteraceae
13 AH1_2nd_20:bin_000027 -1.636880512 0.003306969 d__Bacteria Desulfobacterota c__Desulfovibrionia Desulfovibrionales Desulfovibrionaceae
14 AH1_2nd_10:bin_000069 -1.633551159 0.001591502 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
15 LI1_2nd_4:bin_000037 -1.541769495 1.000000000 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Coprobacillaceae
16 LI1_2nd_8:bin_000079 -1.454775239 0.131542667 d__Bacteria Pseudomonadota c__Gammaproteobacteria Enterobacterales Enterobacteriaceae
17 AH1_2nd_10:bin_000001 -1.414701964 0.007962415 d__Bacteria Cyanobacteriota c__Vampirovibrionia Gastranaerophilales Gastranaerophilaceae
18 AH1_2nd_20:bin_000009 -1.399061741 0.029219049 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
19 AH1_2nd_19:bin_000005 -1.399025732 0.017650505 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
20 LI1_2nd_3:bin_000003 -1.382283470 0.014587355 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
21 LI1_2nd_4:bin_000026 -1.247824146 0.004955522 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Marinifilaceae
22 AH1_2nd_6:bin_000030 -1.234925474 0.011853397 d__Bacteria Pseudomonadota c__Alphaproteobacteria UBA3830 UBA3830
23 AH1_2nd_14:bin_000003 -1.233677453 0.017705651 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
24 LI1_2nd_2:bin_000006 -1.224843510 0.003129365 d__Bacteria Bacillota_A c__Clostridia Christensenellales MGBC116941
25 AH1_2nd_16:bin_000058 -1.216881887 0.004833417 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
26 AH1_2nd_19:bin_000072 -1.176594825 1.000000000 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
27 AH1_2nd_18:bin_000040 -1.172511335 0.141345717 d__Bacteria Actinomycetota c__Coriobacteriia Coriobacteriales Eggerthellaceae
28 AH1_2nd_13:bin_000055 -1.161670869 0.051969566 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
29 LI1_2nd_8:bin_000048 -1.099368907 0.024677238 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
30 LI1_2nd_4:bin_000001 -1.035406921 0.035466594 d__Bacteria Bacillota_A c__Clostridia Christensenellales
31 LI1_2nd_8:bin_000016 -1.017310476 0.040964508 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
32 LI1_2nd_1:bin_000032 -0.999484854 1.000000000 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
33 AH1_2nd_11:bin_000004 -0.971909767 0.033824436 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
34 LI1_2nd_5:bin_000013 -0.970554096 0.040035587 d__Bacteria Bacillota_A c__Clostridia Christensenellales DTU072
35 AH1_2nd_12:bin_000015 -0.955081047 0.091947738 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Coprobacillaceae
36 AH1_2nd_5:bin_000023 -0.935340094 0.068420241 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
37 AH1_2nd_16:bin_000047 -0.922489055 0.019445709 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Marinifilaceae
38 AH1_2nd_10:bin_000050 -0.915250029 0.062275338 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
39 AH1_2nd_20:bin_000024 -0.904223789 0.085727985 d__Bacteria Pseudomonadota c__Alphaproteobacteria RF32 CAG-239
40 AH1_2nd_5:bin_000006 -0.835384441 0.054735417 d__Bacteria Bacillota_C c__Negativicutes Acidaminococcales Acidaminococcaceae
41 LI1_2nd_6:bin_000001 -0.819288155 0.089380355 d__Bacteria Pseudomonadota c__Gammaproteobacteria Enterobacterales Enterobacteriaceae
42 AH1_2nd_6:bin_000060 -0.813265018 0.041072715 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
43 LI1_2nd_5:bin_000037 -0.811995277 0.024515924 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Marinifilaceae
44 LI1_2nd_3:bin_000007 -0.761559060 0.108710846 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
45 AH1_2nd_20:bin_000008 -0.755064594 0.146762306 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
46 AH1_2nd_6:bin_000037 -0.732607033 0.228979980 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales UBA932
47 LI1_2nd_7:bin_000001 -0.724383692 0.276128779 d__Bacteria Bacillota_A c__Clostridia Clostridiales Clostridiaceae
48 AH1_2nd_5:bin_000051 -0.720742397 0.096650644 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
49 AH1_2nd_19:bin_000011 -0.709572225 1.000000000 d__Bacteria Desulfobacterota c__Desulfovibrionia Desulfovibrionales Desulfovibrionaceae
50 LI1_2nd_1:bin_000014 -0.692650571 0.067035686 d__Bacteria Desulfobacterota c__Desulfovibrionia Desulfovibrionales Desulfovibrionaceae
51 LI1_2nd_7:bin_000011 -0.673555412 0.134871483 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
52 AH1_2nd_1:bin_000039 -0.667198867 0.068006903 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Marinifilaceae
53 AH1_2nd_20:bin_000003 -0.657783594 0.245501871 d__Bacteria Cyanobacteriota c__Vampirovibrionia Gastranaerophilales Gastranaerophilaceae
54 LI1_2nd_7:bin_000020 -0.622484932 1.000000000 d__Bacteria Bacillota_B c__Peptococcia Peptococcales Peptococcaceae
55 AH1_2nd_16:bin_000045 -0.584130247 0.099413448 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
56 LI1_2nd_4:bin_000010 -0.572438357 0.167231453 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
57 AH1_2nd_18:bin_000024 -0.570930451 0.145805402 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Marinifilaceae
58 AH1_2nd_13:bin_000025 -0.511260207 0.289820095 d__Bacteria Bacillota_A c__Clostridia Christensenellales UBA3700
59 AH1_2nd_2:bin_000017 -0.498405648 0.145828685 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
60 AH1_2nd_13:bin_000037 -0.491429021 0.159057604 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Marinifilaceae
61 AH1_2nd_19:bin_000001 -0.460649227 0.331234642 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
62 AH1_2nd_6:bin_000004 -0.456682329 0.280801383 d__Bacteria Cyanobacteriota c__Vampirovibrionia Gastranaerophilales RUG14156
63 AH1_2nd_15:bin_000001 -0.453142587 0.350803862 d__Bacteria Pseudomonadota c__Alphaproteobacteria Rhizobiales Rhizobiaceae
64 LI1_2nd_9:bin_000022 -0.435710568 0.175258804 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
65 AH1_2nd_5:bin_000004 -0.426700893 0.259155948 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Acutalibacteraceae
66 AH1_2nd_9:bin_000002 -0.422458230 0.413092317 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
67 AH1_2nd_10:bin_000049 -0.410039582 0.324826918 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
68 AH1_2nd_1:bin_000003 -0.368752504 0.337753915 d__Bacteria Cyanobacteriota c__Vampirovibrionia Gastranaerophilales Gastranaerophilaceae
69 AH1_2nd_14:bin_000052 -0.327862400 0.284734829 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
70 LI1_2nd_7:bin_000005 -0.323963344 0.495004900 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
71 LI1_2nd_3:bin_000005 -0.295164346 0.418500690 d__Bacteria Desulfobacterota c__Desulfovibrionia Desulfovibrionales Desulfovibrionaceae
72 AH1_2nd_12:bin_000008 -0.226626091 0.640611934 d__Bacteria Bacillota c__Bacilli Lactobacillales Streptococcaceae
73 AH1_2nd_6:bin_000062 -0.206368360 0.539866673 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Muribaculaceae
74 LI1_2nd_9:bin_000023 -0.203347377 0.595223736 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
75 AH1_2nd_7:bin_000006 -0.202673177 0.554293566 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
76 LI1_2nd_7:bin_000012 -0.189556770 0.661546421 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
77 AH1_2nd_16:bin_000064 -0.187790084 0.572888455 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
78 AH1_2nd_16:bin_000096 -0.178702383 0.583373192 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Ruminococcaceae
79 LI1_2nd_10:bin_000017 -0.173184347 0.737001280 d__Bacteria Chlamydiota c__Chlamydiia Chlamydiales Chlamydiaceae
80 LI1_2nd_3:bin_000015 -0.170797925 0.612784815 d__Bacteria Bacillota c__Bacilli Staphylococcales Staphylococcaceae
81 LI1_2nd_7:bin_000014 -0.168665378 0.625493363 d__Bacteria Bacteroidota c__Bacteroidia Flavobacteriales UBA1820
82 LI1_2nd_4:bin_000041 -0.132252238 1.000000000 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
83 LI1_2nd_8:bin_000038 -0.127036874 0.666220738 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
84 AH1_2nd_6:bin_000046 -0.124514289 0.800916165 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
85 AH1_2nd_18:bin_000011 -0.121480606 0.781438815 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Coprobacillaceae
86 AH1_2nd_8:bin_000006 -0.085757870 0.837188584 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
87 LI1_2nd_2:bin_000001 -0.081488093 0.806381661 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Ruminococcaceae
88 AH1_2nd_16:bin_000033 -0.070311676 0.836601382 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales
89 AH1_2nd_16:bin_000020 -0.063469833 0.872865235 d__Bacteria Desulfobacterota c__Desulfovibrionia Desulfovibrionales Desulfovibrionaceae
90 LI1_2nd_4:bin_000036 -0.056912524 0.887544342 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
91 AH1_2nd_10:bin_000010 -0.055775151 1.000000000 d__Bacteria Cyanobacteriota c__Vampirovibrionia Gastranaerophilales Gastranaerophilaceae
92 AH1_2nd_16:bin_000019 -0.031730347 0.952633776 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
93 AH1_2nd_14:bin_000014 -0.023373863 0.941623659 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
94 LI1_2nd_9:bin_000004 -0.009434782 0.977099556 d__Bacteria Cyanobacteriota c__Vampirovibrionia Gastranaerophilales Gastranaerophilaceae
95 AH1_2nd_7:bin_000011 -0.009352205 0.980499154 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
96 AH1_2nd_13:bin_000011 -0.004237580 0.991877404 d__Bacteria Pseudomonadota c__Alphaproteobacteria RF32 CAG-239
97 AH1_2nd_1:bin_000005 0.012737951 0.971508554 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
98 LI1_2nd_4:bin_000052 0.044044504 0.897882451 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
99 AH1_2nd_19:bin_000055 0.051824866 0.896680010 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
100 LI1_2nd_7:bin_000042 0.053144641 0.881172225 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
genus species
1 UBA1436
2 Mycoplasmoides
3 Odoribacter
4 Faecisoma
5
6 Alistipes
7 Angelakisella
8 Parabacteroides_B
9 JAAYNV01
10 Blautia_A
11 Ruthenibacterium
12 NHYM01
13 Desulfovibrio
14 Bacteroides
15 Stoquefichus
16 Citrobacter_A Citrobacter_A amalonaticus
17 Limenecus
18 Kineothrix
19 Roseburia
20 Alistipes
21 Odoribacter
22
23 Hungatella_A
24 MGBC116941
25 Enterocloster
26
27 Eggerthella
28 Bacteroides Bacteroides fragilis_B
29
30
31 Rikenella
32 Parabacteroides
33 Hungatella_A
34
35 Thomasclavelia
36 Blautia
37 Odoribacter
38 Bacteroides Bacteroides intestinalis
39 CAZU01
40 Phascolarctobacterium Phascolarctobacterium sp900544795
41 Salmonella Salmonella enterica
42 Intestinimonas
43 Odoribacter
44 C-19
45 Alistipes
46 Egerieousia
47 Sarcina
48 Bacteroides
49 Mailhella
50
51 14-2
52 Odoribacter
53 Scatenecus
54
55 Alistipes
56 Parabacteroides
57 Odoribacter
58
59 Copromonas
60 Odoribacter
61 Parabacteroides
62
63 Agrobacterium Agrobacterium tumefaciens_H
64 Oscillibacter
65
66 Phocaeicola
67 Parabacteroides
68 Scatousia
69 Bacteroides
70 Ventrimonas
71 Lawsonia
72 Lactococcus Lactococcus formosensis
73 HGM05232
74 JALFVM01
75 JALFVM01
76 Alistipes
77 Scatomorpha
78 Ruthenibacterium
79
80 Staphylococcus Staphylococcus shinii
81 Merdimorpha
82 Clostridium_Q
83 Clostridium_Q
84 Bacteroides
85 Coprobacillus
86 CAG-95
87
88
89 Bilophila
90
91 CALURL01
92 Alistipes
93 Marseille-P3106
94 Scatousia
95 Lacrimispora
96 MGBC133411
97
98 Enterocloster
99 Parabacteroides
100 Parabacteroides_B
[ reached 'max' / getOption("max.print") -- omitted 60 rows ]
colors_alphabetic <- read_tsv("https://raw.githubusercontent.com/earthhologenome/EHI_taxonomy_colour/main/ehi_phylum_colors.tsv") %>%
mutate_at(vars(phylum), ~ str_replace(., "[dpcofgs]__", "")) %>%
right_join(taxonomy, by=join_by(phylum == phylum)) %>%
dplyr::select(phylum, colors) %>%
mutate(colors = str_c(colors, "80")) %>% #add 80% alpha
unique() %>%
dplyr::arrange(phylum)
tax_table <- as.data.frame(unique(ancombc_rand_table_mag$phylum))
colnames(tax_table)[1] <- "phylum"
tax_color <- merge(tax_table, colors_alphabetic, by="phylum")%>%
dplyr::arrange(phylum) %>%
dplyr::select(colors) %>%
pull()ancombc_rand_table_mag %>%
mutate(
genome = factor(taxon, levels = ancombc_rand_table_mag$taxon),
significance = ifelse(p_time_pointFMT1 < 0.05, phylum, NA) # Set non-significant to NA (not mapped in legend)
) %>%
ggplot() +
# Plot significant points with legend
geom_point(aes(x = lfc_time_pointFMT1, y = -log10(p_time_pointFMT1), color = significance),
size = 3, alpha = 0.7, na.rm = TRUE) +
# Plot non-significant points separately without legend
geom_point(data = filter(ancombc_rand_table_mag, p_time_pointFMT1 >= 0.05),
aes(x = lfc_time_pointFMT1, y = -log10(p_time_pointFMT1)),
color = "grey70", size = 3, alpha = 0.7, show.legend = FALSE) +
scale_color_manual(
values = tax_color, # Only keeps phylum colors in legend
na.translate = FALSE # Removes NA (non-significant) from legend
) +
geom_hline(yintercept = -log10(0.05), linetype = "dashed") +
geom_vline(xintercept = 0, linetype = "dashed") +
scale_y_continuous(limits = c(0, 5)) +
xlab("log2FoldChange") +
ylab("-log10(p-value)") +
guides(color = guide_legend(title = "Phylum")) +
theme_minimal()+
annotate("text", x = min(ancombc_rand_table_mag$lfc_time_pointFMT1), y = 5,
label = "FMT1", hjust = 0, size = 4, fontface = "bold") +
annotate("text", x = max(ancombc_rand_table_mag$lfc_time_pointFMT1), y = 5,
label = "Acclimation", hjust = 1, size = 4, fontface = "bold")Phyla of the significant MAGs in FMT1
ancombc_rand_table_mag%>%
filter(p_time_pointFMT1 < 0.05) %>%
filter(lfc_time_pointFMT1>0) %>%
count(phylum, name = "sample_count") %>%
arrange(desc(sample_count)) phylum sample_count
1 Bacillota_A 5
2 Bacteroidota 4
3 Bacillota 2
4 Pseudomonadota 2
5 Campylobacterota 1
6 Fusobacteriota 1
Phyla of the significant MAGs in acclimation
ancombc_rand_table_mag%>%
filter(p_time_pointFMT1 < 0.05) %>%
filter(lfc_time_pointFMT1<0) %>%
count(phylum, name = "sample_count") %>%
arrange(desc(sample_count)) phylum sample_count
1 Bacillota_A 13
2 Bacteroidota 8
3 Bacillota 2
4 Campylobacterota 1
5 Cyanobacteriota 1
6 Desulfobacterota 1
7 Pseudomonadota 1
15.6 Differences between FMT1 and FMT2 across the three experimental groups
15.6.1 Functional differences
CI from FMT1 to FMT2
significant_element<-element_gift %>%
filter(time_point %in% c("FMT2","FMT1") & type == "Cold_intervention") %>%
select(-time_point, -type) %>%
filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
select(Tube_code, where( ~ is.numeric(.) && sum(.) > 0)) %>%
left_join(sample_metadata[c(1, 8)], by = "Tube_code") %>%
pivot_longer(-c(Tube_code, time_point),
names_to = "trait",
values_to = "value") %>%
group_by(trait) %>%
summarise(p_value = wilcox.test(value ~ time_point)$p.value) %>%
mutate(p_adjust = p.adjust(p_value, method = "BH")) %>%
filter(p_adjust < 0.05) %>%
remove_rownames() %>%
left_join(., uniqueGIFT_db, by=join_by("trait"=="Code_element"))element_gift_sig <- element_gift %>%
select(Tube_code, all_of(intersect(
significant_element$trait,
colnames(element_gift)
))) %>%
left_join(., sample_metadata[c(1, 6, 8)], by = join_by(Tube_code == Tube_code)) %>%
filter(time_point %in% c("FMT2","FMT1"))%>%
filter(type=="Cold_intervention")
difference_table <- element_gift_sig %>%
select(-Tube_code, -type) %>%
group_by(time_point) %>%
summarise(across(everything(), mean)) %>%
t() %>%
row_to_names(row_number = 1) %>%
as.data.frame() %>%
mutate_if(is.character, as.numeric) %>%
rownames_to_column(., "Elements") %>%
left_join(.,uniqueGIFT_db[c(1,3,4)],by = join_by(Elements == Code_element)) %>%
arrange(Function) %>%
mutate(Difference=FMT1-FMT2)%>%
mutate(group_color = ifelse(Difference <0,"FMT2", "FMT1")) difference_table %>%
ggplot(aes(x=forcats::fct_reorder(Function,Difference), y=Difference, fill=group_color)) +
geom_col() +
scale_fill_manual(values=c('#008080',"#76b183")) +
geom_hline(yintercept=0) +
coord_flip()+
theme(axis.text = element_text(size = 10),
axis.title = element_text(size = 12),
legend.position = "right",
legend.title = element_blank(),
panel.background = element_blank(),
panel.grid.major = element_line(size = 0.15, linetype = 'solid',
colour = "grey"))+
xlab("Function") +
ylab("Mean difference")CC from FMT1 to FMT2
element_gift %>%
filter(time_point %in% c("FMT2","FMT1") & type == "Cold_control") %>%
select(-time_point, -type) %>%
filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
select(Tube_code, where( ~ is.numeric(.) && sum(.) > 0)) %>%
left_join(sample_metadata[c(1, 8)], by = "Tube_code") %>%
pivot_longer(-c(Tube_code, time_point),
names_to = "trait",
values_to = "value") %>%
group_by(trait) %>%
summarise(p_value = wilcox.test(value ~ time_point)$p.value) %>%
mutate(p_adjust = p.adjust(p_value, method = "BH")) %>%
filter(p_adjust < 0.05) %>%
remove_rownames() %>%
left_join(., uniqueGIFT_db, by=join_by("trait"=="Code_element"))# A tibble: 0 × 6
# ℹ 6 variables: trait <chr>, p_value <dbl>, p_adjust <dbl>, Domain <chr>, Function <chr>, Element <chr>
WC from FMT1 to FMT2
element_gift %>%
filter(time_point %in% c("FMT2","FMT1") & type == "Warm_control") %>%
select(-time_point, -type) %>%
filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
select(Tube_code, where( ~ is.numeric(.) && sum(.) > 0)) %>%
left_join(sample_metadata[c(1, 8)], by = "Tube_code") %>%
pivot_longer(-c(Tube_code, time_point),
names_to = "trait",
values_to = "value") %>%
group_by(trait) %>%
summarise(p_value = wilcox.test(value ~ time_point)$p.value) %>%
mutate(p_adjust = p.adjust(p_value, method = "BH")) %>%
filter(p_adjust < 0.05) %>%
remove_rownames() %>%
left_join(., uniqueGIFT_db, by=join_by("trait"=="Code_element"))# A tibble: 0 × 6
# ℹ 6 variables: trait <chr>, p_value <dbl>, p_adjust <dbl>, Domain <chr>, Function <chr>, Element <chr>
15.6.2 Differential abundances
15.6.2.1 CI: FMT1 vs FMT2
Structural zeros
struc <- structural_zeros %>%
filter(present=="FMT1")%>%
count(phylum, name = "FMT1") %>%
arrange(desc(FMT1))
structural_zeros %>%
filter(present=="FMT2")%>%
count(phylum, name = "FMT2") %>%
arrange(desc(FMT2)) %>%
full_join(., struc, by="phylum") %>%
mutate(across(everything(), ~ ifelse(is.na(.), 0, .))) %>%
tt()| phylum | FMT2 | FMT1 |
|---|---|---|
| p__Bacillota_A | 19 | 8 |
| p__Pseudomonadota | 15 | 0 |
| p__Bacteroidota | 8 | 2 |
| p__Bacillota | 5 | 3 |
| p__Cyanobacteriota | 5 | 0 |
| p__Desulfobacterota | 2 | 0 |
| p__Verrucomicrobiota | 2 | 0 |
| p__Bacillota_C | 1 | 0 |
| p__Spirochaetota | 1 | 0 |
| p__Actinomycetota | 0 | 1 |
| p__Campylobacterota | 0 | 1 |
phylo_samples <- sample_metadata %>%
filter(type == "Cold_intervention" & time_point %in% c("FMT1", "FMT2") )%>%
column_to_rownames("Tube_code") %>%
sample_data()
phylo_genome <- genome_counts_filt %>%
filter(!genome %in% structural_zeros$genome) %>%
select(one_of(c("genome",rownames(phylo_samples)))) %>%
filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
select(genome, where(~ is.numeric(.) && sum(.) > 0)) %>%
column_to_rownames("genome") %>%
otu_table(., taxa_are_rows = TRUE)
phylo_taxonomy <- genome_metadata %>%
filter(genome %in% rownames(phylo_genome)) %>%
column_to_rownames("genome") %>%
dplyr::select(domain,phylum,class,order,family,genus,species) %>%
as.matrix() %>%
tax_table()
physeq_genome_filtered <- phyloseq(phylo_genome, phylo_taxonomy, phylo_samples)ancom_rand_output_ci_fmt1_FMT2 = ancombc2(data = physeq_genome_filtered,
assay_name = "counts",
tax_level = NULL,
fix_formula = "time_point",
p_adj_method = "holm",
pseudo_sens = TRUE,
prv_cut =0,
lib_cut = 0,
s0_perc = 0.05,
group = NULL,
struc_zero = FALSE,
neg_lb = FALSE,
alpha = 0.05,
n_cl = 2,
verbose = TRUE,
global = FALSE,
pairwise = FALSE,
dunnet = FALSE,
trend = FALSE,
iter_control = list(tol = 1e-5, max_iter = 20, verbose = FALSE),
em_control = list(tol = 1e-5, max_iter = 100),
mdfdr_control = list(fwer_ctrl_method = "holm", B = 100),
trend_control = NULL)ancom_rand_output_ci_fmt1_FMT2$res %>%
dplyr::select(taxon, lfc_time_pointFMT2, p_time_pointFMT2) %>%
filter(p_time_pointFMT2 < 0.05) %>%
left_join(., genome_metadata, by=join_by("taxon"=="genome")) %>%
select(2,3,7,8,9) %>%
tt() | lfc_time_pointFMT2 | p_time_pointFMT2 | order | family | genus |
|---|---|---|---|---|
| 1.6049257 | 0.0157811882 | o__Gastranaerophilales | f__Gastranaerophilaceae | g__Limenecus |
| 0.9564973 | 0.0275097118 | o__Bacteroidales | f__Tannerellaceae | g__Parabacteroides |
| 2.0492182 | 0.0166204047 | o__Lachnospirales | f__Lachnospiraceae | g__Hungatella_A |
| -1.8918089 | 0.0096699935 | o__Campylobacterales | f__Helicobacteraceae | g__Helicobacter_J |
| -1.2081046 | 0.0210589048 | o__RF32 | f__CAG-239 | g__MGBC133411 |
| 1.1513092 | 0.0219338311 | o__Bacteroidales | f__Bacteroidaceae | g__Bacteroides |
| 1.9022385 | 0.0009678399 | o__Lachnospirales | f__Lachnospiraceae | g__Hungatella_A |
| -1.1428833 | 0.0226212070 | o__Rhizobiales | f__Rhizobiaceae | g__Agrobacterium |
| 1.5906273 | 0.0008227119 | o__Lachnospirales | f__Lachnospiraceae | g__Acetatifactor |
| 1.0975241 | 0.0150004143 | o__Oscillospirales | f__Oscillospiraceae | g__Scatomorpha |
| -1.0241243 | 0.0081256219 | o__Lachnospirales | f__Lachnospiraceae | g__ |
| 1.1899452 | 0.0392264071 | o__Bacteroidales | f__Marinifilaceae | g__Odoribacter |
| 2.3003361 | 0.0160580792 | o__Bacteroidales | f__Rikenellaceae | g__Alistipes |
| -1.1771426 | 0.0398005710 | o__Bacteroidales | f__Bacteroidaceae | g__Bacteroides |
| 2.1549960 | 0.0063980104 | o__Enterobacterales | f__Enterobacteriaceae | g__Proteus |
| 1.1806298 | 0.0153184268 | o__Lachnospirales | f__Lachnospiraceae | g__CAG-95 |
| 0.9643163 | 0.0213552181 | o__Bacteroidales | f__Bacteroidaceae | g__Bacteroides |
| 0.9715614 | 0.0148063607 | o__Desulfovibrionales | f__Desulfovibrionaceae | g__ |
| 1.4550694 | 0.0288178508 | o__Christensenellales | f__ | g__ |
| 1.6826956 | 0.0003988881 | o__Bacteroidales | f__Marinifilaceae | g__Odoribacter |
| -1.7750819 | 0.0188386547 | o__Bacteroidales | f__Rikenellaceae | g__Alistipes |
| -1.0206597 | 0.0387357866 | o__Erysipelotrichales | f__Erysipelotrichaceae | g__Clostridium_AQ |
| 1.6686679 | 0.0064021560 | o__Lachnospirales | f__Lachnospiraceae | g__ |
| 1.2527316 | 0.0339066243 | o__RF32 | f__CAG-239 | g__CAJLXD01 |
| 1.1133229 | 0.0229428413 | o__Oscillospirales | f__Oscillospiraceae | g__Oscillibacter |
taxonomy <- data.frame(physeq_genome_filtered@tax_table) %>%
rownames_to_column(., "taxon") %>%
mutate_at(vars(order, phylum, family, genus, species), ~ str_replace(., "[dpcofgs]__", ""))
ancombc_rand_table_mag <- ancom_rand_output_ci_fmt1_FMT2$res %>%
dplyr::select(taxon, lfc_time_pointFMT2, p_time_pointFMT2) %>%
#filter(p_time_pointFMT2 < 0.05) %>%
dplyr::arrange(p_time_pointFMT2) %>%
merge(., taxonomy, by="taxon") %>%
mutate_at(vars(phylum, species), ~ str_replace(., "[dpcofgs]__", ""))%>%
dplyr::arrange(lfc_time_pointFMT2)
ancombc_rand_table_mag taxon lfc_time_pointFMT2 p_time_pointFMT2 domain phylum class order family
1 AH1_2nd_2:bin_000018 -2.2170594742 1.000000000 d__Bacteria Elusimicrobiota c__Elusimicrobia Elusimicrobiales Elusimicrobiaceae
2 AH1_2nd_12:bin_000012 -1.8918089486 0.009669994 d__Bacteria Campylobacterota c__Campylobacteria Campylobacterales Helicobacteraceae
3 LI1_2nd_7:bin_000012 -1.7750818527 0.018838655 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
4 AH1_2nd_1:bin_000034 -1.6789181641 0.122732878 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
5 AH1_2nd_2:bin_000017 -1.6426716672 0.099339303 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
6 AH1_2nd_12:bin_000007 -1.3317033397 0.149416164 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
7 AH1_2nd_13:bin_000049 -1.2129524972 1.000000000 d__Bacteria Bacillota_A c__Clostridia Christensenellales UBA3700
8 AH1_2nd_13:bin_000011 -1.2081046232 0.021058905 d__Bacteria Pseudomonadota c__Alphaproteobacteria RF32 CAG-239
9 AH1_2nd_6:bin_000046 -1.1771425763 0.039800571 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
10 AH1_2nd_15:bin_000001 -1.1428833217 0.022621207 d__Bacteria Pseudomonadota c__Alphaproteobacteria Rhizobiales Rhizobiaceae
11 AH1_2nd_1:bin_000023 -1.0241243111 0.008125622 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
12 LI1_2nd_7:bin_000016 -1.0206596605 0.038735787 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
13 AH1_2nd_16:bin_000020 -0.8225875827 0.125186644 d__Bacteria Desulfobacterota c__Desulfovibrionia Desulfovibrionales Desulfovibrionaceae
14 LI1_2nd_4:bin_000036 -0.7526182595 0.126502538 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
15 AH1_2nd_16:bin_000033 -0.7360801119 0.259428240 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales
16 AH1_2nd_16:bin_000018 -0.7339918201 0.050556855 d__Bacteria Bacillota_A c__Clostridia Christensenellales UBA3700
17 LI1_2nd_2:bin_000006 -0.6585081134 0.243653520 d__Bacteria Bacillota_A c__Clostridia Christensenellales MGBC116941
18 AH1_2nd_12:bin_000008 -0.6374710665 0.240673513 d__Bacteria Bacillota c__Bacilli Lactobacillales Streptococcaceae
19 AH1_2nd_16:bin_000045 -0.6276291694 0.142544022 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
20 AH1_2nd_2:bin_000001 -0.6267640458 0.103108126 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
21 AH1_2nd_10:bin_000097 -0.6211566498 0.172843297 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
22 AH1_2nd_5:bin_000006 -0.5548028963 0.145909018 d__Bacteria Bacillota_C c__Negativicutes Acidaminococcales Acidaminococcaceae
23 LI1_2nd_8:bin_000079 -0.5544456136 0.224155294 d__Bacteria Pseudomonadota c__Gammaproteobacteria Enterobacterales Enterobacteriaceae
24 AH1_2nd_5:bin_000073 -0.5285887503 0.294517962 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
25 AH1_2nd_9:bin_000047 -0.5283891687 0.106458201 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
26 LI1_2nd_9:bin_000023 -0.5086805550 0.166418019 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
27 LI1_2nd_8:bin_000070 -0.4860780469 0.356817031 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
28 LI1_2nd_7:bin_000014 -0.4683846051 0.314952831 d__Bacteria Bacteroidota c__Bacteroidia Flavobacteriales UBA1820
29 AH1_2nd_16:bin_000047 -0.4250924204 1.000000000 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Marinifilaceae
30 AH1_2nd_19:bin_000055 -0.4061328580 0.375240818 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
31 LI1_2nd_7:bin_000038 -0.3966760527 1.000000000 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
32 AH1_2nd_5:bin_000069 -0.3900113999 0.311651877 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
33 AH1_2nd_20:bin_000087 -0.3245503723 0.266844400 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
34 AH1_2nd_7:bin_000036 -0.3212194646 0.334517260 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
35 AH1_2nd_17:bin_000020 -0.3187362674 0.426259034 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
36 AH1_2nd_10:bin_000042 -0.3101621313 1.000000000 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
37 LI1_2nd_8:bin_000064 -0.2610335487 0.646906988 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
38 AH1_2nd_7:bin_000070 -0.2418390019 0.493532581 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
39 LI1_2nd_7:bin_000040 -0.2381398838 0.583059539 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
40 AH1_2nd_5:bin_000023 -0.2136644368 0.593548340 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
41 AH1_2nd_7:bin_000027 -0.1580093762 0.583321339 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
42 AH1_2nd_8:bin_000027 -0.1571181784 0.675378405 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
43 AH1_2nd_15:bin_000004 -0.1536142596 0.696309495 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
44 AH1_2nd_8:bin_000007 -0.1519618005 0.586159140 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
45 AH1_2nd_12:bin_000041 -0.1294680721 0.770312929 d__Bacteria Bacillota c__Bacilli Mycoplasmatales Mycoplasmoidaceae
46 AH1_2nd_7:bin_000041 -0.1273204855 0.690949178 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
47 LI1_2nd_4:bin_000034 -0.1191329411 0.736328870 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
48 LI1_2nd_7:bin_000083 -0.1172776467 0.698042931 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
49 LI1_2nd_4:bin_000041 -0.1155769652 0.702040881 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
50 AH1_2nd_1:bin_000048 -0.1090370229 0.695407295 d__Bacteria Bacillota_A c__Clostridia Peptostreptococcales Anaerovoracaceae
51 AH1_2nd_19:bin_000067 -0.0833563872 0.811024270 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
52 AH1_2nd_11:bin_000005 -0.0355163387 0.950101967 d__Bacteria Fusobacteriota c__Fusobacteriia Fusobacteriales Fusobacteriaceae
53 LI1_2nd_7:bin_000005 -0.0290230670 1.000000000 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
54 LI1_2nd_5:bin_000023 -0.0240260015 0.929045758 d__Bacteria Pseudomonadota c__Alphaproteobacteria UBA3830
55 AH1_2nd_16:bin_000058 -0.0169831700 0.954070906 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
56 AH1_2nd_18:bin_000033 -0.0100172749 0.969644351 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Coprobacillaceae
57 AH1_2nd_15:bin_000013 -0.0001676338 0.999546372 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
58 LI1_2nd_8:bin_000016 0.0011274489 0.996771455 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
59 AH1_2nd_16:bin_000025 0.0366696878 0.901343037 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Ruminococcaceae
60 AH1_2nd_16:bin_000019 0.0369203759 0.924379339 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
61 AH1_2nd_7:bin_000011 0.0479829287 0.875765403 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
62 AH1_2nd_18:bin_000041 0.0540359288 1.000000000 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
63 AH1_2nd_15:bin_000025 0.0701556482 0.886016590 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
64 AH1_2nd_7:bin_000004 0.0707079201 0.893038927 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
65 LI1_2nd_7:bin_000009 0.0852743604 0.793414966 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Ruminococcaceae
66 LI1_2nd_7:bin_000053 0.0883838143 0.808848202 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
67 AH1_2nd_18:bin_000039 0.0902103359 0.751572995 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
68 AH1_2nd_7:bin_000055 0.0995979755 0.783239826 d__Bacteria Bacillota c__Bacilli Mycoplasmatales Mycoplasmoidaceae
69 AH1_2nd_20:bin_000042 0.1457144033 0.687130023 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
70 AH1_2nd_14:bin_000032 0.1595169534 0.607052260 d__Bacteria Bacillota_C c__Negativicutes Selenomonadales Massilibacillaceae
71 AH1_2nd_12:bin_000018 0.1715907676 0.539214431 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
72 AH1_2nd_14:bin_000052 0.1912431106 0.601899351 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
73 AH1_2nd_13:bin_000025 0.2216490457 0.511924719 d__Bacteria Bacillota_A c__Clostridia Christensenellales UBA3700
74 AH1_2nd_1:bin_000015 0.2218604276 0.613436340 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
75 LI1_2nd_5:bin_000037 0.2236604074 0.503097546 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Marinifilaceae
76 AH1_2nd_14:bin_000063 0.2304734408 0.488756679 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
77 AH1_2nd_15:bin_000043 0.2329461781 0.511602541 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
78 AH1_2nd_5:bin_000004 0.2382440770 0.468335048 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Acutalibacteraceae
79 LI1_2nd_7:bin_000078 0.2932171346 0.427503334 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
80 LI1_2nd_8:bin_000006 0.3331257716 0.403780919 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
81 AH1_2nd_14:bin_000014 0.3373251738 0.270598916 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
82 AH1_2nd_20:bin_000006 0.3542644595 0.293421593 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Marinifilaceae
83 LI1_2nd_7:bin_000019 0.3561942326 0.281023928 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Marinifilaceae
84 AH1_2nd_19:bin_000050 0.3635927444 0.421825348 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
85 AH1_2nd_1:bin_000003 0.3754831806 0.314191133 d__Bacteria Cyanobacteriota c__Vampirovibrionia Gastranaerophilales Gastranaerophilaceae
86 AH1_2nd_11:bin_000028 0.4410427519 0.247717632 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
87 AH1_2nd_1:bin_000002 0.4518608620 0.177644673 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Ruminococcaceae
88 AH1_2nd_6:bin_000062 0.4580597522 0.307562548 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Muribaculaceae
89 LI1_2nd_4:bin_000052 0.4668906412 0.232901403 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
90 LI1_2nd_7:bin_000033 0.4871293802 0.230751510 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Ruminococcaceae
91 AH1_2nd_16:bin_000023 0.4902761211 0.360578101 d__Bacteria Bacillota_A c__Clostridia Christensenellales UBA3700
92 AH1_2nd_6:bin_000037 0.4968732208 1.000000000 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales UBA932
93 AH1_2nd_6:bin_000060 0.5058525488 0.123057616 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
94 LI1_2nd_3:bin_000003 0.5061346276 0.172686829 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
95 AH1_2nd_16:bin_000096 0.5099151444 0.171129874 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Ruminococcaceae
96 AH1_2nd_16:bin_000100 0.5845175399 0.253252200 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
97 AH1_2nd_10:bin_000069 0.5995170465 0.172000007 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
98 AH1_2nd_20:bin_000016 0.6065298077 0.204139503 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
99 AH1_2nd_18:bin_000024 0.7171502782 0.107781937 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Marinifilaceae
100 AH1_2nd_20:bin_000027 0.7182052307 0.095720937 d__Bacteria Desulfobacterota c__Desulfovibrionia Desulfovibrionales Desulfovibrionaceae
genus species
1 UBA1436
2 Helicobacter_J
3 Alistipes
4 Dielma
5 Copromonas
6
7
8 MGBC133411
9 Bacteroides
10 Agrobacterium Agrobacterium tumefaciens_H
11
12 Clostridium_AQ
13 Bilophila
14
15
16
17 MGBC116941
18 Lactococcus Lactococcus formosensis
19 Alistipes
20
21 Parabacteroides
22 Phascolarctobacterium Phascolarctobacterium sp900544795
23 Citrobacter_A Citrobacter_A amalonaticus
24 Parabacteroides Parabacteroides goldsteinii
25 Bacteroides
26 JALFVM01
27 Bacteroides
28 Merdimorpha
29 Odoribacter
30 Parabacteroides
31 Parabacteroides_B
32 Bacteroides
33 Parabacteroides Parabacteroides gordonii
34 Intestinimonas
35 Clostridium_Q
36 Alistipes
37 Parabacteroides
38 Pseudoflavonifractor
39
40 Blautia
41 Copromonas
42 NSJ-61
43 UMGS1251
44 Dielma
45 Mycoplasmoides
46
47 Bacteroides Bacteroides thetaiotaomicron
48 Pseudoflavonifractor
49 Clostridium_Q
50
51 Bacteroides Bacteroides ovatus
52 Fusobacterium_A Fusobacterium_A ulcerans
53 Ventrimonas
54
55 Enterocloster
56 Beduini
57 Ventrimonas
58 Rikenella
59 Negativibacillus
60 Alistipes
61 Lacrimispora
62 Bacteroides
63 Phocaeicola
64 Eisenbergiella
65 Anaerotruncus
66 Bacteroides Bacteroides nordii
67 Alistipes
68 Ureaplasma
69 Hungatella
70
71 Alistipes
72 Bacteroides
73
74 MGBC136627
75 Odoribacter
76 Blautia_A
77 Bacteroides
78
79 Copromonas
80 Alistipes
81 Marseille-P3106
82 Butyricimonas Butyricimonas sp900184685
83 Butyricimonas
84
85 Scatousia
86 Bacteroides
87 Fournierella
88 HGM05232
89 Enterocloster
90 Fournierella
91
92 Egerieousia
93 Intestinimonas
94 Alistipes
95 Ruthenibacterium
96 Bacteroides
97 Bacteroides
98
99 Odoribacter
100 Desulfovibrio
[ reached 'max' / getOption("max.print") -- omitted 51 rows ]
colors_alphabetic <- read_tsv("https://raw.githubusercontent.com/earthhologenome/EHI_taxonomy_colour/main/ehi_phylum_colors.tsv") %>%
mutate_at(vars(phylum), ~ str_replace(., "[dpcofgs]__", "")) %>%
right_join(taxonomy, by=join_by(phylum == phylum)) %>%
dplyr::select(phylum, colors) %>%
mutate(colors = str_c(colors, "80")) %>% #add 80% alpha
unique() %>%
dplyr::arrange(phylum)
tax_table <- as.data.frame(unique(ancombc_rand_table_mag$phylum))
colnames(tax_table)[1] <- "phylum"
tax_color <- merge(tax_table, colors_alphabetic, by="phylum")%>%
dplyr::arrange(phylum) %>%
dplyr::select(colors) %>%
pull()ancombc_rand_table_mag %>%
mutate(
genome = factor(taxon, levels = ancombc_rand_table_mag$taxon),
significance = ifelse(p_time_pointFMT2 < 0.05, phylum, NA) # Set non-significant to NA (not mapped in legend)
) %>%
ggplot() +
# Plot significant points with legend
geom_point(aes(x = lfc_time_pointFMT2, y = -log10(p_time_pointFMT2), color = significance),
size = 3, alpha = 0.7, na.rm = TRUE) +
# Plot non-significant points separately without legend
geom_point(data = filter(ancombc_rand_table_mag, p_time_pointFMT2 >= 0.05),
aes(x = lfc_time_pointFMT2, y = -log10(p_time_pointFMT2)),
color = "grey70", size = 3, alpha = 0.7, show.legend = FALSE) +
scale_color_manual(
values = tax_color, # Only keeps phylum colors in legend
na.translate = FALSE # Removes NA (non-significant) from legend
) +
geom_hline(yintercept = -log10(0.05), linetype = "dashed") +
geom_vline(xintercept = 0, linetype = "dashed") +
scale_y_continuous(limits = c(0, 4)) +
xlab("log2FoldChange") +
ylab("-log10(p-value)") +
guides(color = guide_legend(title = "Phylum")) +
theme_minimal()+
annotate("text", x = min(ancombc_rand_table_mag$lfc_time_pointFMT2), y = 4,
label = "FMT1", hjust = 0, size = 4, fontface = "bold") +
annotate("text", x = max(ancombc_rand_table_mag$lfc_time_pointFMT2), y = 4,
label = "FMT2", hjust = 1, size = 4, fontface = "bold")Phyla of the significant MAGs in FMT2
ancombc_rand_table_mag%>%
filter(p_time_pointFMT2 < 0.05) %>%
filter(lfc_time_pointFMT2>0) %>%
count(phylum, name = "sample_count") %>%
arrange(desc(sample_count)) phylum sample_count
1 Bacillota_A 8
2 Bacteroidota 6
3 Pseudomonadota 2
4 Cyanobacteriota 1
5 Desulfobacterota 1
Phyla of the significant MAGs in FMT1
ancombc_rand_table_mag%>%
filter(p_time_pointFMT2 < 0.05) %>%
filter(lfc_time_pointFMT2<0) %>%
count(phylum, name = "sample_count") %>%
arrange(desc(sample_count)) phylum sample_count
1 Bacteroidota 2
2 Pseudomonadota 2
3 Bacillota 1
4 Bacillota_A 1
5 Campylobacterota 1
15.6.2.2 CC: FMT1 vs FMT2
Structural zeros
struc <- structural_zeros %>%
filter(present=="FMT1")%>%
count(phylum, name = "FMT1") %>%
arrange(desc(FMT1))
structural_zeros %>%
filter(present=="FMT2")%>%
count(phylum, name = "FMT2") %>%
arrange(desc(FMT2)) %>%
full_join(., struc, by="phylum") %>%
mutate(across(everything(), ~ ifelse(is.na(.), 0, .))) %>%
tt()| phylum | FMT2 | FMT1 |
|---|---|---|
| p__Bacillota_A | 19 | 6 |
| p__Bacillota | 6 | 4 |
| p__Bacteroidota | 6 | 6 |
| p__Pseudomonadota | 6 | 1 |
| p__Cyanobacteriota | 2 | 0 |
| p__Desulfobacterota | 2 | 1 |
| p__Campylobacterota | 1 | 0 |
| p__Verrucomicrobiota | 1 | 0 |
| p__Actinomycetota | 0 | 1 |
phylo_samples <- sample_metadata %>%
filter(type == "Cold_control" & time_point %in% c("FMT1", "FMT2") )%>%
column_to_rownames("Tube_code") %>%
sample_data()
phylo_genome <- genome_counts_filt %>%
filter(!genome %in% structural_zeros$genome) %>%
select(one_of(c("genome",rownames(phylo_samples)))) %>%
filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
select(genome, where(~ is.numeric(.) && sum(.) > 0)) %>%
column_to_rownames("genome") %>%
otu_table(., taxa_are_rows = TRUE)
phylo_taxonomy <- genome_metadata %>%
filter(genome %in% rownames(phylo_genome)) %>%
column_to_rownames("genome") %>%
dplyr::select(domain,phylum,class,order,family,genus,species) %>%
as.matrix() %>%
tax_table()
physeq_genome_filtered <- phyloseq(phylo_genome, phylo_taxonomy, phylo_samples)ancom_rand_output_cc_fmt1_FMT2 = ancombc2(data = physeq_genome_filtered,
assay_name = "counts",
tax_level = NULL,
fix_formula = "time_point",
p_adj_method = "holm",
pseudo_sens = TRUE,
prv_cut =0,
lib_cut = 0,
s0_perc = 0.05,
group = NULL,
struc_zero = FALSE,
neg_lb = FALSE,
alpha = 0.05,
n_cl = 2,
verbose = TRUE,
global = FALSE,
pairwise = FALSE,
dunnet = FALSE,
trend = FALSE,
iter_control = list(tol = 1e-5, max_iter = 20, verbose = FALSE),
em_control = list(tol = 1e-5, max_iter = 100),
mdfdr_control = list(fwer_ctrl_method = "holm", B = 100),
trend_control = NULL)ancom_rand_output_cc_fmt1_FMT2$res %>%
dplyr::select(taxon, lfc_time_pointFMT2, p_time_pointFMT2) %>%
filter(p_time_pointFMT2 < 0.05) %>%
left_join(., genome_metadata, by=join_by("taxon"=="genome")) %>%
select(2,3,7,8,9) %>%
tt() | lfc_time_pointFMT2 | p_time_pointFMT2 | order | family | genus |
|---|---|---|---|---|
| -1.1198010 | 0.0493049200 | o__Gastranaerophilales | f__Gastranaerophilaceae | g__CALURL01 |
| -1.5062750 | 0.0097993777 | o__Fusobacteriales | f__Fusobacteriaceae | g__Fusobacterium_A |
| 2.4827509 | 0.0139900320 | o__RF32 | f__CAG-239 | g__Scatocola |
| -1.3151251 | 0.0072517934 | o__Lactobacillales | f__Streptococcaceae | g__Lactococcus |
| 1.4541589 | 0.0160901321 | o__Bacteroidales | f__Rikenellaceae | g__Alistipes |
| -0.8116835 | 0.0444836720 | o__Bacteroidales | f__Rikenellaceae | g__Alistipes |
| 1.1136172 | 0.0250850121 | o__Mycoplasmatales | f__Mycoplasmoidaceae | g__Mycoplasmoides |
| -1.3597164 | 0.0258606282 | o__Rhizobiales | f__Rhizobiaceae | g__Agrobacterium |
| 1.1091976 | 0.0164391420 | o__Gastranaerophilales | f__Gastranaerophilaceae | g__Limenecus |
| -0.9340069 | 0.0351897828 | o__Lachnospirales | f__Lachnospiraceae | g__Clostridium_Q |
| -1.5761510 | 0.0087725688 | o__Erysipelotrichales | f__Erysipelotrichaceae | g__NSJ-61 |
| 1.6900745 | 0.0007465451 | o__Bacteroidales | f__Tannerellaceae | g__Parabacteroides |
| -2.0339744 | 0.0146779091 | o__Bacteroidales | f__Marinifilaceae | g__Odoribacter |
| -1.1908959 | 0.0223022247 | o__Coriobacteriales | f__Eggerthellaceae | g__Eggerthella |
| 1.0462005 | 0.0272520436 | o__Bacteroidales | f__Tannerellaceae | g__Parabacteroides |
| -1.1937901 | 0.0224995923 | o__Bacteroidales | f__Tannerellaceae | g__Parabacteroides |
| -2.3139776 | 0.0012671561 | o__Lachnospirales | f__Lachnospiraceae | g__ |
| 1.1186724 | 0.0417965176 | o__Lachnospirales | f__Lachnospiraceae | g__ |
| -2.3220764 | 0.0118523541 | o__Lachnospirales | f__Lachnospiraceae | g__MGBC136627 |
| -1.7225723 | 0.0084680239 | o__Lachnospirales | f__Lachnospiraceae | g__ |
| -1.0102405 | 0.0451494794 | o__Erysipelotrichales | f__Erysipelotrichaceae | g__Dielma |
| 1.0311504 | 0.0132985344 | o__Oscillospirales | f__Acutalibacteraceae | g__ |
| -3.0528872 | 0.0006416506 | o__Enterobacterales | f__Enterobacteriaceae | g__Proteus |
| -2.0779366 | 0.0016473980 | o__Mycoplasmatales | f__Mycoplasmoidaceae | g__Ureaplasma |
| -1.6574844 | 0.0054464826 | o__Bacteroidales | f__Tannerellaceae | g__Parabacteroides |
| -1.1168025 | 0.0257358548 | o__Oscillospirales | f__Oscillospiraceae | g__Pseudoflavonifractor |
| -1.2369578 | 0.0432727451 | o__Peptococcales | f__Peptococcaceae | g__RGIG6463 |
| -1.1783817 | 0.0145456364 | o__Erysipelotrichales | f__Erysipelotrichaceae | g__Clostridium_AQ |
| -1.4329605 | 0.0047288565 | o__Christensenellales | f__UBA3700 | g__ |
| -1.5111121 | 0.0031036127 | o__Bacteroidales | f__Tannerellaceae | g__Parabacteroides |
| -1.1709721 | 0.0168869815 | o__Bacteroidales | f__Bacteroidaceae | g__Bacteroides |
taxonomy <- data.frame(physeq_genome_filtered@tax_table) %>%
rownames_to_column(., "taxon") %>%
mutate_at(vars(order, phylum, family, genus, species), ~ str_replace(., "[dpcofgs]__", ""))
ancombc_rand_table_mag <- ancom_rand_output_cc_fmt1_FMT2$res %>%
dplyr::select(taxon, lfc_time_pointFMT2, p_time_pointFMT2) %>%
#filter(p_time_pointFMT2 < 0.05) %>%
dplyr::arrange(p_time_pointFMT2) %>%
merge(., taxonomy, by="taxon") %>%
mutate_at(vars(phylum, species), ~ str_replace(., "[dpcofgs]__", ""))%>%
dplyr::arrange(lfc_time_pointFMT2)
ancombc_rand_table_mag taxon lfc_time_pointFMT2 p_time_pointFMT2 domain phylum class order family
1 LI1_2nd_10:bin_000018 -3.31447169 1.0000000000 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
2 AH1_2nd_7:bin_000010 -3.30303444 1.0000000000 d__Bacteria Pseudomonadota c__Alphaproteobacteria RF32 CAG-239
3 AH1_2nd_7:bin_000003 -3.05288723 0.0006416506 d__Bacteria Pseudomonadota c__Gammaproteobacteria Enterobacterales Enterobacteriaceae
4 AH1_2nd_1:bin_000015 -2.32207639 0.0118523541 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
5 AH1_2nd_19:bin_000072 -2.31397764 0.0012671561 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
6 LI1_2nd_7:bin_000053 -2.20355357 1.0000000000 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
7 AH1_2nd_7:bin_000055 -2.07793661 0.0016473980 d__Bacteria Bacillota c__Bacilli Mycoplasmatales Mycoplasmoidaceae
8 AH1_2nd_18:bin_000024 -2.03397438 0.0146779091 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Marinifilaceae
9 AH1_2nd_12:bin_000007 -1.92051664 0.1148569150 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
10 AH1_2nd_13:bin_000011 -1.73568911 0.0938536206 d__Bacteria Pseudomonadota c__Alphaproteobacteria RF32 CAG-239
11 AH1_2nd_12:bin_000056 -1.72844265 1.0000000000 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
12 AH1_2nd_1:bin_000023 -1.72257234 0.0084680239 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
13 AH1_2nd_12:bin_000044 -1.66220361 1.0000000000 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
14 AH1_2nd_7:bin_000065 -1.65748441 0.0054464826 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
15 AH1_2nd_5:bin_000073 -1.64486346 1.0000000000 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
16 AH1_2nd_17:bin_000029 -1.57615104 0.0087725688 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
17 AH1_2nd_7:bin_000017 -1.54785328 1.0000000000 d__Bacteria Desulfobacterota c__Desulfovibrionia Desulfovibrionales Desulfovibrionaceae
18 LI1_2nd_7:bin_000078 -1.54732216 0.1079249784 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
19 LI1_2nd_8:bin_000064 -1.51111206 0.0031036127 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
20 AH1_2nd_11:bin_000005 -1.50627502 0.0097993777 d__Bacteria Fusobacteriota c__Fusobacteriia Fusobacteriales Fusobacteriaceae
21 LI1_2nd_8:bin_000019 -1.43296047 0.0047288565 d__Bacteria Bacillota_A c__Clostridia Christensenellales UBA3700
22 AH1_2nd_15:bin_000001 -1.35971641 0.0258606282 d__Bacteria Pseudomonadota c__Alphaproteobacteria Rhizobiales Rhizobiaceae
23 AH1_2nd_12:bin_000008 -1.31512515 0.0072517934 d__Bacteria Bacillota c__Bacilli Lactobacillales Streptococcaceae
24 AH1_2nd_7:bin_000005 -1.25956134 1.0000000000 d__Bacteria Bacillota_C c__Negativicutes Acidaminococcales Acidaminococcaceae
25 LI1_2nd_1:bin_000006 -1.23695780 0.0432727451 d__Bacteria Bacillota_B c__Peptococcia Peptococcales Peptococcaceae
26 LI1_2nd_7:bin_000040 -1.22539158 1.0000000000 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
27 AH1_2nd_19:bin_000055 -1.19379006 0.0224995923 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
28 AH1_2nd_18:bin_000040 -1.19089595 0.0223022247 d__Bacteria Actinomycetota c__Coriobacteriia Coriobacteriales Eggerthellaceae
29 LI1_2nd_4:bin_000003 -1.17899796 1.0000000000 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
30 LI1_2nd_7:bin_000016 -1.17838170 0.0145456364 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
31 LI1_2nd_8:bin_000070 -1.17097215 0.0168869815 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
32 LI1_2nd_10:bin_000017 -1.17083401 1.0000000000 d__Bacteria Chlamydiota c__Chlamydiia Chlamydiales Chlamydiaceae
33 AH1_2nd_10:bin_000010 -1.11980098 0.0493049200 d__Bacteria Cyanobacteriota c__Vampirovibrionia Gastranaerophilales Gastranaerophilaceae
34 AH1_2nd_7:bin_000070 -1.11680255 0.0257358548 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
35 AH1_2nd_7:bin_000060 -1.08947487 0.0685470015 d__Bacteria Bacillota_A c__Clostridia Eubacteriales Eubacteriaceae
36 AH1_2nd_10:bin_000049 -1.07227106 0.0608887913 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
37 AH1_2nd_11:bin_000004 -1.02816598 1.0000000000 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
38 AH1_2nd_1:bin_000034 -1.01024051 0.0451494794 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
39 AH1_2nd_7:bin_000036 -0.97686458 0.0502387480 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
40 AH1_2nd_8:bin_000056 -0.97181876 0.1651921805 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
41 LI1_2nd_8:bin_000048 -0.96753496 0.0535034077 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
42 AH1_2nd_8:bin_000051 -0.95370663 0.0693984411 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
43 AH1_2nd_13:bin_000025 -0.93846629 0.2249741347 d__Bacteria Bacillota_A c__Clostridia Christensenellales UBA3700
44 AH1_2nd_17:bin_000020 -0.93400689 0.0351897828 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
45 AH1_2nd_5:bin_000037 -0.87365532 0.1845172676 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
46 AH1_2nd_14:bin_000052 -0.86717449 0.0577734378 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
47 AH1_2nd_14:bin_000047 -0.81464027 0.0863462400 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
48 AH1_2nd_12:bin_000018 -0.81168355 0.0444836720 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
49 AH1_2nd_19:bin_000053 -0.79618315 0.1992914817 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
50 AH1_2nd_9:bin_000015 -0.79008673 0.0590367473 d__Bacteria Desulfobacterota c__Desulfovibrionia Desulfovibrionales Desulfovibrionaceae
51 AH1_2nd_19:bin_000067 -0.74344044 0.1079809850 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
52 AH1_2nd_15:bin_000013 -0.73243588 0.0721427894 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
53 AH1_2nd_14:bin_000063 -0.70775818 0.0704567904 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
54 LI1_2nd_4:bin_000036 -0.68890291 0.1570833785 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
55 AH1_2nd_5:bin_000001 -0.68335413 0.1397978394 d__Bacteria Bacillota_C c__Negativicutes Selenomonadales
56 AH1_2nd_11:bin_000028 -0.68309727 0.1393442971 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
57 LI1_2nd_7:bin_000083 -0.67263526 0.0624737951 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
58 AH1_2nd_7:bin_000027 -0.63326145 0.0916304028 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
59 AH1_2nd_18:bin_000033 -0.58034911 0.0910414298 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Coprobacillaceae
60 AH1_2nd_15:bin_000025 -0.54489587 0.2773138343 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
61 AH1_2nd_15:bin_000004 -0.52431642 0.1585491240 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
62 LI1_2nd_8:bin_000033 -0.49339480 0.1388733059 d__Bacteria Bacillota_C c__Negativicutes Selenomonadales
63 AH1_2nd_7:bin_000011 -0.48690688 0.2623426363 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
64 AH1_2nd_8:bin_000027 -0.48377973 0.2494601566 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
65 AH1_2nd_16:bin_000045 -0.42231723 0.2208254305 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
66 AH1_2nd_7:bin_000041 -0.39412285 0.2217449601 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
67 AH1_2nd_5:bin_000023 -0.39168227 0.2268615769 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
68 AH1_2nd_7:bin_000006 -0.36796245 0.3870562493 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
69 LI1_2nd_8:bin_000079 -0.35815945 0.3356688947 d__Bacteria Pseudomonadota c__Gammaproteobacteria Enterobacterales Enterobacteriaceae
70 AH1_2nd_20:bin_000027 -0.34093411 1.0000000000 d__Bacteria Desulfobacterota c__Desulfovibrionia Desulfovibrionales Desulfovibrionaceae
71 AH1_2nd_9:bin_000047 -0.32989275 0.3542231990 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
72 AH1_2nd_18:bin_000047 -0.32948170 0.5225406571 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
73 LI1_2nd_4:bin_000041 -0.32846165 0.4400601500 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
74 AH1_2nd_10:bin_000009 -0.28981655 0.4969603940 d__Bacteria Desulfobacterota c__Desulfovibrionia Desulfovibrionales Desulfovibrionaceae
75 AH1_2nd_19:bin_000052 -0.28309357 1.0000000000 d__Bacteria Verrucomicrobiota c__Verrucomicrobiae Opitutales LL51
76 AH1_2nd_7:bin_000015 -0.27606569 0.5381996058 d__Bacteria Pseudomonadota c__Alphaproteobacteria RF32 CAG-239
77 AH1_2nd_19:bin_000005 -0.27324854 0.5764297852 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
78 AH1_2nd_16:bin_000025 -0.17985833 0.6301171339 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Ruminococcaceae
79 AH1_2nd_6:bin_000060 -0.16640238 1.0000000000 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
80 AH1_2nd_14:bin_000014 -0.13288977 0.6732892235 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
81 AH1_2nd_1:bin_000002 -0.10001016 0.8160008029 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Ruminococcaceae
82 AH1_2nd_9:bin_000023 -0.09322763 0.7761682588 d__Bacteria Bacillota c__Bacilli RFN20 CAG-288
83 AH1_2nd_14:bin_000003 -0.08065136 0.8025648786 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
84 AH1_2nd_2:bin_000003 -0.07671427 0.8331360033 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
85 AH1_2nd_14:bin_000032 -0.07653252 0.7839900975 d__Bacteria Bacillota_C c__Negativicutes Selenomonadales Massilibacillaceae
86 AH1_2nd_12:bin_000012 -0.06274415 0.9057514181 d__Bacteria Campylobacterota c__Campylobacteria Campylobacterales Helicobacteraceae
87 AH1_2nd_19:bin_000050 -0.05308835 0.8751060207 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
88 AH1_2nd_19:bin_000011 -0.05304033 0.8480588324 d__Bacteria Desulfobacterota c__Desulfovibrionia Desulfovibrionales Desulfovibrionaceae
89 AH1_2nd_16:bin_000058 -0.01315875 0.9676245603 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
90 LI1_2nd_7:bin_000042 0.02510172 0.9570955639 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
91 AH1_2nd_17:bin_000030 0.02700583 0.9280456712 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
92 AH1_2nd_1:bin_000048 0.05860246 0.8608253440 d__Bacteria Bacillota_A c__Clostridia Peptostreptococcales Anaerovoracaceae
93 AH1_2nd_9:bin_000002 0.08996791 0.8783653508 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
94 AH1_2nd_15:bin_000043 0.09039449 0.7743586547 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
95 LI1_2nd_5:bin_000013 0.09954949 0.7714367370 d__Bacteria Bacillota_A c__Clostridia Christensenellales DTU072
96 AH1_2nd_18:bin_000039 0.11265387 0.7016435471 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
97 AH1_2nd_13:bin_000055 0.12595106 1.0000000000 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
98 AH1_2nd_8:bin_000007 0.14324441 0.6584804512 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
99 LI1_2nd_7:bin_000009 0.14984005 0.6315252798 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Ruminococcaceae
100 AH1_2nd_5:bin_000069 0.16883789 0.7076248426 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
genus species
1 Bacteroides
2 CAJLXD01
3 Proteus Proteus cibarius
4 MGBC136627
5
6 Bacteroides Bacteroides nordii
7 Ureaplasma
8 Odoribacter
9
10 MGBC133411
11 Enterocloster
12
13 Parabacteroides Parabacteroides distasonis
14 Parabacteroides
15 Parabacteroides Parabacteroides goldsteinii
16 NSJ-61
17 Lawsonia
18 Copromonas
19 Parabacteroides
20 Fusobacterium_A Fusobacterium_A ulcerans
21
22 Agrobacterium Agrobacterium tumefaciens_H
23 Lactococcus Lactococcus formosensis
24 Phascolarctobacterium Phascolarctobacterium faecium
25 RGIG6463
26
27 Parabacteroides
28 Eggerthella
29 Dielma
30 Clostridium_AQ
31 Bacteroides
32
33 CALURL01
34 Pseudoflavonifractor
35 Eubacterium
36 Parabacteroides
37 Hungatella_A
38 Dielma
39 Intestinimonas
40 Bacteroides
41
42 Bacteroides
43
44 Clostridium_Q
45 Pseudoflavonifractor
46 Bacteroides
47 Bacteroides
48 Alistipes
49 CAG-56
50 Desulfovibrio
51 Bacteroides Bacteroides ovatus
52 Ventrimonas
53 Blautia_A
54
55
56 Bacteroides
57 Pseudoflavonifractor
58 Copromonas
59 Beduini
60 Phocaeicola
61 UMGS1251
62
63 Lacrimispora
64 NSJ-61
65 Alistipes
66
67 Blautia
68 JALFVM01
69 Citrobacter_A Citrobacter_A amalonaticus
70 Desulfovibrio
71 Bacteroides
72 Parabacteroides
73 Clostridium_Q
74 Bilophila
75
76 CAZU01
77 Roseburia
78 Negativibacillus
79 Intestinimonas
80 Marseille-P3106
81 Fournierella
82 CAG-345
83 Hungatella_A
84 JAAYNV01
85
86 Helicobacter_J
87
88 Mailhella
89 Enterocloster
90 Parabacteroides_B
91 Bacteroides
92
93 Phocaeicola
94 Bacteroides
95
96 Alistipes
97 Bacteroides Bacteroides fragilis_B
98 Dielma
99 Anaerotruncus
100 Bacteroides
[ reached 'max' / getOption("max.print") -- omitted 25 rows ]
colors_alphabetic <- read_tsv("https://raw.githubusercontent.com/earthhologenome/EHI_taxonomy_colour/main/ehi_phylum_colors.tsv") %>%
mutate_at(vars(phylum), ~ str_replace(., "[dpcofgs]__", "")) %>%
right_join(taxonomy, by=join_by(phylum == phylum)) %>%
dplyr::select(phylum, colors) %>%
mutate(colors = str_c(colors, "80")) %>% #add 80% alpha
unique() %>%
dplyr::arrange(phylum)
tax_table <- as.data.frame(unique(ancombc_rand_table_mag$phylum))
colnames(tax_table)[1] <- "phylum"
tax_color <- merge(tax_table, colors_alphabetic, by="phylum")%>%
dplyr::arrange(phylum) %>%
dplyr::select(colors) %>%
pull()ancombc_rand_table_mag %>%
mutate(
genome = factor(taxon, levels = ancombc_rand_table_mag$taxon),
significance = ifelse(p_time_pointFMT2 < 0.05, phylum, NA) # Set non-significant to NA (not mapped in legend)
) %>%
ggplot() +
# Plot significant points with legend
geom_point(aes(x = lfc_time_pointFMT2, y = -log10(p_time_pointFMT2), color = significance),
size = 3, alpha = 0.7, na.rm = TRUE) +
# Plot non-significant points separately without legend
geom_point(data = filter(ancombc_rand_table_mag, p_time_pointFMT2 >= 0.05),
aes(x = lfc_time_pointFMT2, y = -log10(p_time_pointFMT2)),
color = "grey70", size = 3, alpha = 0.7, show.legend = FALSE) +
scale_color_manual(
values = tax_color, # Only keeps phylum colors in legend
na.translate = FALSE # Removes NA (non-significant) from legend
) +
geom_hline(yintercept = -log10(0.05), linetype = "dashed") +
geom_vline(xintercept = 0, linetype = "dashed") +
scale_y_continuous(limits = c(0, 4)) +
xlab("log2FoldChange") +
ylab("-log10(p-value)") +
guides(color = guide_legend(title = "Phylum")) +
theme_minimal()+
annotate("text", x = min(ancombc_rand_table_mag$lfc_time_pointFMT2), y = 4,
label = "FMT1", hjust = 0, size = 4, fontface = "bold") +
annotate("text", x = max(ancombc_rand_table_mag$lfc_time_pointFMT2), y = 4,
label = "FMT2", hjust = 1, size = 4, fontface = "bold")Phyla of the significant MAGs in FMT2
ancombc_rand_table_mag%>%
filter(p_time_pointFMT2 < 0.05) %>%
filter(lfc_time_pointFMT2>0) %>%
count(phylum, name = "sample_count") %>%
arrange(desc(sample_count)) phylum sample_count
1 Bacteroidota 3
2 Bacillota_A 2
3 Bacillota 1
4 Cyanobacteriota 1
5 Pseudomonadota 1
Phyla of the significant MAGs in FMT1
ancombc_rand_table_mag%>%
filter(p_time_pointFMT2 < 0.05) %>%
filter(lfc_time_pointFMT2<0) %>%
count(phylum, name = "sample_count") %>%
arrange(desc(sample_count)) phylum sample_count
1 Bacillota_A 6
2 Bacteroidota 6
3 Bacillota 5
4 Pseudomonadota 2
5 Actinomycetota 1
6 Bacillota_B 1
7 Cyanobacteriota 1
8 Fusobacteriota 1
15.6.2.3 WC: FMT1 vs FMT2
Structural zeros
struc <- structural_zeros %>%
filter(present=="FMT1")%>%
count(phylum, name = "FMT1") %>%
arrange(desc(FMT1))
structural_zeros %>%
filter(present=="FMT2")%>%
count(phylum, name = "FMT2") %>%
arrange(desc(FMT2)) %>%
full_join(., struc, by="phylum") %>%
mutate(across(everything(), ~ ifelse(is.na(.), 0, .))) %>%
tt()| phylum | FMT2 | FMT1 |
|---|---|---|
| p__Bacillota_A | 12 | 13 |
| p__Bacteroidota | 8 | 3 |
| p__Bacillota | 4 | 5 |
| p__Pseudomonadota | 4 | 1 |
| p__Cyanobacteriota | 3 | 0 |
| p__Desulfobacterota | 2 | 0 |
| p__Verrucomicrobiota | 2 | 0 |
| p__Bacillota_B | 1 | 0 |
| p__Bacillota_C | 0 | 1 |
phylo_samples <- sample_metadata %>%
filter(type == "Warm_control" & time_point %in% c("FMT1", "FMT2") )%>%
column_to_rownames("Tube_code") %>%
sample_data()
phylo_genome <- genome_counts_filt %>%
filter(!genome %in% structural_zeros$genome) %>%
select(one_of(c("genome",rownames(phylo_samples)))) %>%
filter(rowSums(across(where(is.numeric), ~ . != 0)) > 0) %>%
select(genome, where(~ is.numeric(.) && sum(.) > 0)) %>%
column_to_rownames("genome") %>%
otu_table(., taxa_are_rows = TRUE)
phylo_taxonomy <- genome_metadata %>%
filter(genome %in% rownames(phylo_genome)) %>%
column_to_rownames("genome") %>%
dplyr::select(domain,phylum,class,order,family,genus,species) %>%
as.matrix() %>%
tax_table()
physeq_genome_filtered <- phyloseq(phylo_genome, phylo_taxonomy, phylo_samples)ancom_rand_output_wc_fmt1_FMT2 = ancombc2(data = physeq_genome_filtered,
assay_name = "counts",
tax_level = NULL,
fix_formula = "time_point",
p_adj_method = "holm",
pseudo_sens = TRUE,
prv_cut =0,
lib_cut = 0,
s0_perc = 0.05,
group = NULL,
struc_zero = FALSE,
neg_lb = FALSE,
alpha = 0.05,
n_cl = 2,
verbose = TRUE,
global = FALSE,
pairwise = FALSE,
dunnet = FALSE,
trend = FALSE,
iter_control = list(tol = 1e-5, max_iter = 20, verbose = FALSE),
em_control = list(tol = 1e-5, max_iter = 100),
mdfdr_control = list(fwer_ctrl_method = "holm", B = 100),
trend_control = NULL)ancom_rand_output_wc_fmt1_FMT2$res %>%
dplyr::select(taxon, lfc_time_pointFMT2, p_time_pointFMT2) %>%
filter(p_time_pointFMT2 < 0.05) %>%
left_join(., genome_metadata, by=join_by("taxon"=="genome")) %>%
select(2,3,7,8,9) %>%
tt() | lfc_time_pointFMT2 | p_time_pointFMT2 | order | family | genus |
|---|---|---|---|---|
| 1.2537325 | 0.029011593 | o__Gastranaerophilales | f__Gastranaerophilaceae | g__Limenecus |
| -1.2446218 | 0.020897418 | o__Fusobacteriales | f__Fusobacteriaceae | g__Fusobacterium_A |
| -1.3152584 | 0.044543573 | o__Campylobacterales | f__Helicobacteraceae | g__Helicobacter_J |
| -0.8821247 | 0.029330809 | o__Lachnospirales | f__Lachnospiraceae | g__UMGS1251 |
| 1.0370118 | 0.034798957 | o__Bacteroidales | f__Marinifilaceae | g__Odoribacter |
| -1.4081841 | 0.011345341 | o__Erysipelotrichales | f__Coprobacillaceae | g__Coprobacillus |
| -1.1775932 | 0.019499011 | o__Erysipelotrichales | f__Erysipelotrichaceae | g__ |
| 1.3523455 | 0.016477167 | o__Desulfovibrionales | f__Desulfovibrionaceae | g__Desulfovibrio |
| 1.3457840 | 0.022072106 | o__Christensenellales | f__UBA1242 | g__ |
| -1.7017766 | 0.009626807 | o__Bacteroidales | f__Tannerellaceae | g__Parabacteroides |
| 1.2803273 | 0.043789286 | o__Acidaminococcales | f__Acidaminococcaceae | g__Phascolarctobacterium |
| -1.3245581 | 0.011056770 | o__Bacteroidales | f__Tannerellaceae | g__Parabacteroides |
| 1.3062379 | 0.019865974 | o__Bacteroidales | f__Marinifilaceae | g__Odoribacter |
| 1.3245459 | 0.013082061 | o__UBA3830 | f__UBA3830 | g__ |
| -1.5592978 | 0.025407224 | o__Enterobacterales | f__Enterobacteriaceae | g__Proteus |
| -1.0812434 | 0.013919048 | o__Lachnospirales | f__Lachnospiraceae | g__Eisenbergiella |
| -1.0099994 | 0.023380577 | o__Bacteroidales | f__Bacteroidaceae | g__Bacteroides |
| -1.2817587 | 0.001367698 | o__Bacteroidales | f__Bacteroidaceae | g__Bacteroides |
| -1.1580560 | 0.033213580 | o__Chlamydiales | f__Chlamydiaceae | g__ |
| 0.6998666 | 0.026257063 | o__Christensenellales | f__MGBC116941 | g__MGBC116941 |
| 1.5483904 | 0.002502672 | o__Christensenellales | f__ | g__ |
| -0.9563076 | 0.039772629 | o__Oscillospirales | f__Ruminococcaceae | g__Anaerotruncus |
| 2.3773896 | 0.015636768 | o__Lachnospirales | f__Lachnospiraceae | g__14-2 |
| -0.9161289 | 0.047763615 | o__Bacteroidales | f__Rikenellaceae | g__Alistipes |
| -0.9044651 | 0.026634644 | o__Oscillospirales | f__Ruminococcaceae | g__Fournierella |
| 1.4541016 | 0.030212531 | o__Bacteroidales | f__Tannerellaceae | g__Parabacteroides_B |
| -1.0124184 | 0.011201437 | o__Lachnospirales | f__Lachnospiraceae | g__ |
| -0.9084867 | 0.028859672 | o__Bacteroidales | f__Bacteroidaceae | g__Bacteroides |
| -0.7064750 | 0.043580530 | o__Lachnospirales | f__Lachnospiraceae | g__Copromonas |
| -0.7714674 | 0.029067625 | o__Oscillospirales | f__Oscillospiraceae | g__Pseudoflavonifractor |
| 1.5835649 | 0.022738074 | o__Bacteroidales | f__Rikenellaceae | g__Alistipes |
| -1.8505816 | 0.008115738 | o__Christensenellales | f__UBA3700 | g__ |
| -1.1895271 | 0.015730598 | o__Bacteroidales | f__Bacteroidaceae | g__Bacteroides |
| -1.4689203 | 0.016641038 | o__RF32 | f__CAG-239 | g__CAJLXD01 |
taxonomy <- data.frame(physeq_genome_filtered@tax_table) %>%
rownames_to_column(., "taxon") %>%
mutate_at(vars(order, phylum, family, genus, species), ~ str_replace(., "[dpcofgs]__", ""))
ancombc_rand_table_mag <- ancom_rand_output_wc_fmt1_FMT2$res %>%
dplyr::select(taxon, lfc_time_pointFMT2, p_time_pointFMT2) %>%
#filter(p_time_pointFMT2 < 0.05) %>%
dplyr::arrange(p_time_pointFMT2) %>%
merge(., taxonomy, by="taxon") %>%
mutate_at(vars(phylum, species), ~ str_replace(., "[dpcofgs]__", ""))%>%
dplyr::arrange(lfc_time_pointFMT2)
ancombc_rand_table_mag taxon lfc_time_pointFMT2 p_time_pointFMT2 domain phylum class order family
1 AH1_2nd_20:bin_000073 -4.3031988137 1.000000000 d__Bacteria Bacillota c__Bacilli Lactobacillales Enterococcaceae
2 AH1_2nd_10:bin_000097 -2.9177223471 0.054500702 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
3 LI1_2nd_8:bin_000019 -1.8505816492 0.008115738 d__Bacteria Bacillota_A c__Clostridia Christensenellales UBA3700
4 AH1_2nd_20:bin_000087 -1.7017766044 0.009626807 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
5 AH1_2nd_7:bin_000003 -1.5592978126 0.025407224 d__Bacteria Pseudomonadota c__Gammaproteobacteria Enterobacterales Enterobacteriaceae
6 AH1_2nd_20:bin_000054 -1.5356765029 0.102478288 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
7 LI1_2nd_9:bin_000007 -1.4689203460 0.016641038 d__Bacteria Pseudomonadota c__Alphaproteobacteria RF32 CAG-239
8 LI1_2nd_7:bin_000074 -1.4189759202 1.000000000 d__Bacteria Pseudomonadota c__Gammaproteobacteria Enterobacterales Enterobacteriaceae
9 AH1_2nd_18:bin_000011 -1.4081841124 0.011345341 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Coprobacillaceae
10 AH1_2nd_5:bin_000016 -1.3273362400 1.000000000 d__Bacteria Bacillota c__Bacilli Lactobacillales Enterococcaceae
11 AH1_2nd_5:bin_000073 -1.3245580585 0.011056770 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
12 AH1_2nd_12:bin_000012 -1.3152584353 0.044543573 d__Bacteria Campylobacterota c__Campylobacteria Campylobacterales Helicobacteraceae
13 AH1_2nd_9:bin_000047 -1.2817587079 0.001367698 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
14 AH1_2nd_11:bin_000028 -1.2753871418 0.062137752 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
15 AH1_2nd_11:bin_000005 -1.2446217932 0.020897418 d__Bacteria Fusobacteriota c__Fusobacteriia Fusobacteriales Fusobacteriaceae
16 LI1_2nd_7:bin_000008 -1.1951326928 1.000000000 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
17 LI1_2nd_8:bin_000070 -1.1895270540 0.015730598 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
18 AH1_2nd_20:bin_000016 -1.1775932446 0.019499011 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
19 LI1_2nd_10:bin_000017 -1.1580559813 0.033213580 d__Bacteria Chlamydiota c__Chlamydiia Chlamydiales Chlamydiaceae
20 LI1_2nd_7:bin_000019 -1.1124294235 0.149183516 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Marinifilaceae
21 AH1_2nd_7:bin_000004 -1.0812434267 0.013919048 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
22 LI1_2nd_4:bin_000034 -1.0225200893 0.083242968 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
23 LI1_2nd_7:bin_000040 -1.0124183513 0.011201437 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
24 AH1_2nd_8:bin_000051 -1.0099993618 0.023380577 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
25 AH1_2nd_16:bin_000023 -0.9686001201 0.085015012 d__Bacteria Bacillota_A c__Clostridia Christensenellales UBA3700
26 AH1_2nd_10:bin_000010 -0.9585647370 1.000000000 d__Bacteria Cyanobacteriota c__Vampirovibrionia Gastranaerophilales Gastranaerophilaceae
27 LI1_2nd_7:bin_000009 -0.9563075978 0.039772629 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Ruminococcaceae
28 LI1_2nd_5:bin_000023 -0.9417497581 0.168204326 d__Bacteria Pseudomonadota c__Alphaproteobacteria UBA3830
29 AH1_2nd_12:bin_000014 -0.9339127523 1.000000000 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
30 AH1_2nd_5:bin_000069 -0.9174656405 0.082673726 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
31 LI1_2nd_7:bin_000012 -0.9161289400 0.047763615 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
32 LI1_2nd_7:bin_000053 -0.9084866848 0.028859672 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
33 LI1_2nd_7:bin_000033 -0.9044651107 0.026634644 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Ruminococcaceae
34 AH1_2nd_15:bin_000004 -0.8821246987 0.029330809 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
35 AH1_2nd_13:bin_000025 -0.8680263775 0.129315742 d__Bacteria Bacillota_A c__Clostridia Christensenellales UBA3700
36 AH1_2nd_15:bin_000025 -0.8595055764 0.088893219 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
37 AH1_2nd_1:bin_000023 -0.8485566793 0.051298337 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
38 AH1_2nd_1:bin_000002 -0.8298286581 0.055203715 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Ruminococcaceae
39 AH1_2nd_20:bin_000014 -0.7873319956 0.266163546 d__Bacteria Pseudomonadota c__Gammaproteobacteria Enterobacterales Enterobacteriaceae
40 LI1_2nd_7:bin_000083 -0.7714673775 0.029067625 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
41 LI1_2nd_7:bin_000016 -0.7641368208 0.174649325 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
42 AH1_2nd_19:bin_000055 -0.7482250502 0.085497939 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
43 AH1_2nd_16:bin_000096 -0.7135495542 0.058885195 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Ruminococcaceae
44 AH1_2nd_7:bin_000011 -0.7111546798 0.085242927 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
45 LI1_2nd_7:bin_000078 -0.7064750075 0.043580530 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
46 AH1_2nd_15:bin_000043 -0.6930651633 0.136980899 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
47 LI1_2nd_4:bin_000052 -0.6854029500 0.060051814 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
48 AH1_2nd_7:bin_000055 -0.6850687136 0.093901218 d__Bacteria Bacillota c__Bacilli Mycoplasmatales Mycoplasmoidaceae
49 LI1_2nd_7:bin_000014 -0.6837208048 0.071808537 d__Bacteria Bacteroidota c__Bacteroidia Flavobacteriales UBA1820
50 LI1_2nd_4:bin_000024 -0.6714280076 0.134833378 d__Bacteria Bacillota_A c__Clostridia Christensenellales UBA3700
51 LI1_2nd_2:bin_000019 -0.6571501446 0.271447473 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
52 LI1_2nd_9:bin_000023 -0.5650076735 0.145237827 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
53 LI1_2nd_8:bin_000033 -0.5604123019 0.074391308 d__Bacteria Bacillota_C c__Negativicutes Selenomonadales
54 LI1_2nd_6:bin_000001 -0.5557966817 0.255666657 d__Bacteria Pseudomonadota c__Gammaproteobacteria Enterobacterales Enterobacteriaceae
55 AH1_2nd_5:bin_000023 -0.5386669928 0.153233560 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
56 LI1_2nd_4:bin_000041 -0.4991025577 1.000000000 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
57 LI1_2nd_9:bin_000004 -0.4951898723 0.240711578 d__Bacteria Cyanobacteriota c__Vampirovibrionia Gastranaerophilales Gastranaerophilaceae
58 AH1_2nd_6:bin_000024 -0.4873530110 1.000000000 d__Bacteria Spirochaetota c__Brevinematia Brevinematales Brevinemataceae
59 AH1_2nd_6:bin_000046 -0.4829259194 0.390146506 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
60 AH1_2nd_7:bin_000070 -0.4798046567 0.111090695 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
61 AH1_2nd_12:bin_000015 -0.4686515200 0.304069497 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Coprobacillaceae
62 LI1_2nd_4:bin_000003 -0.4551253434 0.250500125 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
63 AH1_2nd_9:bin_000002 -0.4142956179 0.355256761 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
64 AH1_2nd_16:bin_000020 -0.4072297079 0.297339585 d__Bacteria Desulfobacterota c__Desulfovibrionia Desulfovibrionales Desulfovibrionaceae
65 AH1_2nd_16:bin_000019 -0.4040600464 0.412451844 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
66 AH1_2nd_15:bin_000001 -0.3959369539 0.378170117 d__Bacteria Pseudomonadota c__Alphaproteobacteria Rhizobiales Rhizobiaceae
67 AH1_2nd_7:bin_000041 -0.3720974135 0.233995336 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
68 AH1_2nd_17:bin_000020 -0.3428926657 0.374303135 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
69 LI1_2nd_7:bin_000042 -0.3142829889 0.438513826 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
70 AH1_2nd_18:bin_000033 -0.3066546643 0.300775791 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Coprobacillaceae
71 AH1_2nd_7:bin_000005 -0.3006930108 1.000000000 d__Bacteria Bacillota_C c__Negativicutes Acidaminococcales Acidaminococcaceae
72 LI1_2nd_7:bin_000005 -0.2826849504 0.444682537 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
73 LI1_2nd_8:bin_000038 -0.2790072396 0.381747791 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
74 AH1_2nd_16:bin_000064 -0.2750516645 0.348255452 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
75 AH1_2nd_2:bin_000001 -0.2671760587 0.392465811 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
76 AH1_2nd_2:bin_000017 -0.2223616407 0.555717283 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
77 LI1_2nd_1:bin_000014 -0.2198453312 0.424958273 d__Bacteria Desulfobacterota c__Desulfovibrionia Desulfovibrionales Desulfovibrionaceae
78 LI1_2nd_10:bin_000018 -0.2155836875 0.582444800 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
79 LI1_2nd_8:bin_000064 -0.2086630872 0.627760308 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
80 AH1_2nd_16:bin_000018 -0.1829930923 0.682269260 d__Bacteria Bacillota_A c__Clostridia Christensenellales UBA3700
81 LI1_2nd_8:bin_000079 -0.1651060341 0.667068837 d__Bacteria Pseudomonadota c__Gammaproteobacteria Enterobacterales Enterobacteriaceae
82 AH1_2nd_1:bin_000003 -0.1645008520 0.628676599 d__Bacteria Cyanobacteriota c__Vampirovibrionia Gastranaerophilales Gastranaerophilaceae
83 AH1_2nd_14:bin_000032 -0.1565957729 0.643080579 d__Bacteria Bacillota_C c__Negativicutes Selenomonadales Massilibacillaceae
84 AH1_2nd_14:bin_000003 -0.1550162157 0.589569846 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
85 AH1_2nd_18:bin_000024 -0.1302382471 0.676600401 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Marinifilaceae
86 AH1_2nd_6:bin_000062 -0.1280137213 0.670802793 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Muribaculaceae
87 AH1_2nd_10:bin_000049 -0.1268983662 0.735417633 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Tannerellaceae
88 AH1_2nd_6:bin_000060 -0.1136227986 0.672787513 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
89 AH1_2nd_11:bin_000004 -0.0844829680 0.792385740 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
90 LI1_2nd_3:bin_000007 -0.0607462596 0.855862610 d__Bacteria Bacillota c__Bacilli Erysipelotrichales Erysipelotrichaceae
91 AH1_2nd_13:bin_000011 -0.0512873835 0.901434898 d__Bacteria Pseudomonadota c__Alphaproteobacteria RF32 CAG-239
92 AH1_2nd_20:bin_000042 -0.0451252887 0.896928901 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
93 AH1_2nd_14:bin_000014 -0.0428104853 0.883994440 d__Bacteria Bacillota_A c__Clostridia Oscillospirales Oscillospiraceae
94 LI1_2nd_8:bin_000016 -0.0289267155 0.921023221 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
95 AH1_2nd_8:bin_000006 -0.0236498925 0.958712200 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
96 LI1_2nd_4:bin_000036 -0.0006469469 0.998617628 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Bacteroidaceae
97 AH1_2nd_20:bin_000008 -0.0005517028 0.998506814 d__Bacteria Bacteroidota c__Bacteroidia Bacteroidales Rikenellaceae
98 AH1_2nd_15:bin_000009 0.0469550383 0.905872496 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
99 LI1_2nd_8:bin_000048 0.0655156195 0.830117302 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
100 AH1_2nd_7:bin_000027 0.0702534166 0.834430212 d__Bacteria Bacillota_A c__Clostridia Lachnospirales Lachnospiraceae
genus species
1 Enterococcus Enterococcus sp002174455
2 Parabacteroides
3
4 Parabacteroides Parabacteroides gordonii
5 Proteus Proteus cibarius
6 NSJ-61
7 CAJLXD01
8 Escherichia Escherichia coli
9 Coprobacillus
10 Enterococcus_B Enterococcus_B pernyi
11 Parabacteroides Parabacteroides goldsteinii
12 Helicobacter_J
13 Bacteroides
14 Bacteroides
15 Fusobacterium_A Fusobacterium_A ulcerans
16 Breznakia
17 Bacteroides
18
19
20 Butyricimonas
21 Eisenbergiella
22 Bacteroides Bacteroides thetaiotaomicron
23
24 Bacteroides
25
26 CALURL01
27 Anaerotruncus
28
29 Velocimicrobium
30 Bacteroides
31 Alistipes
32 Bacteroides Bacteroides nordii
33 Fournierella
34 UMGS1251
35
36 Phocaeicola
37
38 Fournierella
39 Citrobacter Citrobacter portucalensis
40 Pseudoflavonifractor
41 Clostridium_AQ
42 Parabacteroides
43 Ruthenibacterium
44 Lacrimispora
45 Copromonas
46 Bacteroides
47 Enterocloster
48 Ureaplasma
49 Merdimorpha
50
51 Lacrimispora
52 JALFVM01
53
54 Salmonella Salmonella enterica
55 Blautia
56 Clostridium_Q
57 Scatousia
58 Brevinema
59 Bacteroides
60 Pseudoflavonifractor
61 Thomasclavelia
62 Dielma
63 Phocaeicola
64 Bilophila
65 Alistipes
66 Agrobacterium Agrobacterium tumefaciens_H
67
68 Clostridium_Q
69 Parabacteroides_B
70 Beduini
71 Phascolarctobacterium Phascolarctobacterium faecium
72 Ventrimonas
73 Clostridium_Q
74 Scatomorpha
75
76 Copromonas
77
78 Bacteroides
79 Parabacteroides
80
81 Citrobacter_A Citrobacter_A amalonaticus
82 Scatousia
83
84 Hungatella_A
85 Odoribacter
86 HGM05232
87 Parabacteroides
88 Intestinimonas
89 Hungatella_A
90 C-19
91 MGBC133411
92 Hungatella
93 Marseille-P3106
94 Rikenella
95 CAG-95
96
97 Alistipes
98 Acetatifactor
99
100 Copromonas
[ reached 'max' / getOption("max.print") -- omitted 59 rows ]
colors_alphabetic <- read_tsv("https://raw.githubusercontent.com/earthhologenome/EHI_taxonomy_colour/main/ehi_phylum_colors.tsv") %>%
mutate_at(vars(phylum), ~ str_replace(., "[dpcofgs]__", "")) %>%
right_join(taxonomy, by=join_by(phylum == phylum)) %>%
dplyr::select(phylum, colors) %>%
mutate(colors = str_c(colors, "80")) %>% #add 80% alpha
unique() %>%
dplyr::arrange(phylum)
tax_table <- as.data.frame(unique(ancombc_rand_table_mag$phylum))
colnames(tax_table)[1] <- "phylum"
tax_color <- merge(tax_table, colors_alphabetic, by="phylum")%>%
dplyr::arrange(phylum) %>%
dplyr::select(colors) %>%
pull()ancombc_rand_table_mag %>%
mutate(
genome = factor(taxon, levels = ancombc_rand_table_mag$taxon),
significance = ifelse(p_time_pointFMT2 < 0.05, phylum, NA) # Set non-significant to NA (not mapped in legend)
) %>%
ggplot() +
# Plot significant points with legend
geom_point(aes(x = lfc_time_pointFMT2, y = -log10(p_time_pointFMT2), color = significance),
size = 3, alpha = 0.7, na.rm = TRUE) +
# Plot non-significant points separately without legend
geom_point(data = filter(ancombc_rand_table_mag, p_time_pointFMT2 >= 0.05),
aes(x = lfc_time_pointFMT2, y = -log10(p_time_pointFMT2)),
color = "grey70", size = 3, alpha = 0.7, show.legend = FALSE) +
scale_color_manual(
values = tax_color, # Only keeps phylum colors in legend
na.translate = FALSE # Removes NA (non-significant) from legend
) +
geom_hline(yintercept = -log10(0.05), linetype = "dashed") +
geom_vline(xintercept = 0, linetype = "dashed") +
scale_y_continuous(limits = c(0, 4)) +
xlab("log2FoldChange") +
ylab("-log10(p-value)") +
guides(color = guide_legend(title = "Phylum")) +
theme_minimal()+
annotate("text", x = min(ancombc_rand_table_mag$lfc_time_pointFMT2), y = 4,
label = "FMT1", hjust = 0, size = 4, fontface = "bold") +
annotate("text", x = max(ancombc_rand_table_mag$lfc_time_pointFMT2), y = 4,
label = "FMT2", hjust = 1, size = 4, fontface = "bold")Phyla of the significant MAGs in FMT2
ancombc_rand_table_mag%>%
filter(p_time_pointFMT2 < 0.05) %>%
filter(lfc_time_pointFMT2>0) %>%
count(phylum, name = "sample_count") %>%
arrange(desc(sample_count)) phylum sample_count
1 Bacillota_A 4
2 Bacteroidota 4
3 Bacillota_C 1
4 Cyanobacteriota 1
5 Desulfobacterota 1
6 Pseudomonadota 1
Phyla of the significant MAGs in FMT1
ancombc_rand_table_mag%>%
filter(p_time_pointFMT2 < 0.05) %>%
filter(lfc_time_pointFMT2<0) %>%
count(phylum, name = "sample_count") %>%
arrange(desc(sample_count)) phylum sample_count
1 Bacillota_A 8
2 Bacteroidota 7
3 Bacillota 2
4 Pseudomonadota 2
5 Campylobacterota 1
6 Chlamydiota 1
7 Fusobacteriota 1